import os import csv class PinchExport: def __init__(self): pass def csvProblemTable(self, problemTable, _temperatures, newpath): colLabels = ['$Interval: S_i - S_{i+1}$', '$\\Delta T (\\degree C)$', '$\\Delta CP (kW / \\degree C)$', '$\\Delta H (kW)$', ''] cellText = [] i = 1 for interval in problemTable: cellRow = [] cellRow.extend(['{}: {} - {}'.format(i, _temperatures[i - 1], _temperatures[i]), interval['deltaS'], interval['deltaCP'], interval['deltaH']]) if interval['deltaH'] > 0: cellRow.append('Surplus') elif interval['deltaH'] == 0: cellRow.append('-') else: cellRow.append('Deficit') cellText.append(cellRow) i = i + 1 if not os.path.exists(newpath): os.makedirs(newpath) fileName = 'ProblemTable.csv' path = os.path.join(newpath, fileName) with open(path, 'w', newline='') as f: writer = csv.writer(f, delimiter=',') writer.writerow(['Interval: S1 - S2', 'delta T (degC)', 'delta CP (kW / degC)', 'delta H (kW)', '']) for rowText in cellText: writer.writerow(rowText) def csvHeatCascade(self, unfeasibleHeatCascade, hotUtility, heatCascade, pinchTemperature, newpath): cellText = [['Unfeasible Heat Cascade: ']] cellText.append(['', '', 'Hot Utility: 0 kW']) cellText.append(['Interval', 'Delta H (kW)', 'Exit H (total kW)']) i = 1 for interval in unfeasibleHeatCascade: cellText.append([str(i), interval['deltaH'], interval['exitH']]) i = i + 1 cellText.append(['', '', 'Cold Utility: {} kW'.format(unfeasibleHeatCascade[-1]['exitH'])]) cellText.append(['']) cellText.append(['Feasible Heat Cascade: ']) cellText.append(['', '', 'Hot Utility: {} kW'.format(hotUtility)]) cellText.append(['Interval', 'Delta H (kW)', 'Exit H (total kW)']) i = 1 for interval in heatCascade: cellText.append([str(i), interval['deltaH'], interval['exitH']]) i = i + 1 cellText.append(['', '', 'Cold Utility: {} kW'.format(heatCascade[-1]['exitH'])]) cellText.append(['','', 'Pinch Temperature: {} degC'.format(pinchTemperature)]) if not os.path.exists(newpath): os.makedirs(newpath) fileName = 'HeatCascade.csv' path = os.path.join(newpath, fileName) with open(path, 'w', newline='') as f: writer = csv.writer(f, delimiter=',') for rowText in cellText: writer.writerow(rowText) def csvShiftedCompositeDiagram(self, newpath, shiftedCompositeDiagram): if not os.path.exists(newpath): os.makedirs(newpath) fileName = 'ShiftedCompositeDiagram.csv' path = os.path.join(newpath, fileName) with open(path, 'w', newline='') as f: writer = csv.writer(f, delimiter=',') writer.writerow(['Hot H', 'Hot T']) for i in range(0, len(shiftedCompositeDiagram['hot']['H'])): writer.writerow([shiftedCompositeDiagram['hot']['H'][i], shiftedCompositeDiagram['hot']['T'][i]]) writer.writerow(['']) writer.writerow(['Cold H', 'Cold T']) for i in range(0, len(shiftedCompositeDiagram['cold']['H'])): writer.writerow([shiftedCompositeDiagram['cold']['H'][i], shiftedCompositeDiagram['cold']['T'][i]]) def csvCompositeDiagram(self, newpath, compositeDiagram): if not os.path.exists(newpath): os.makedirs(newpath) fileName = 'CompositeDiagram.csv' path = os.path.join(newpath, fileName) with open(path, 'w', newline='') as f: writer = csv.writer(f, delimiter=',') writer.writerow(['Hot H', 'Hot T']) for i in range(0, len(compositeDiagram['hot']['H'])): writer.writerow([compositeDiagram['hot']['H'][i], compositeDiagram['hot']['T'][i]]) writer.writerow(['']) writer.writerow(['Cold H', 'Cold T']) for i in range(0, len(compositeDiagram['cold']['H'])): writer.writerow([compositeDiagram['cold']['H'][i], compositeDiagram['cold']['T'][i]]) def csvGrandCompositeCurve(self, newpath, grandCompositeCurve): if not os.path.exists(newpath): os.makedirs(newpath) fileName = 'GrandCompositeCurve.csv' path = os.path.join(newpath, fileName) with open(path, 'w', newline='') as f: writer = csv.writer(f, delimiter=',') writer.writerow(['Net H (kW)', 'T(degC)']) for i in range(0, len(grandCompositeCurve['H'])): writer.writerow([grandCompositeCurve['H'][i], grandCompositeCurve['T'][i]])