File size: 5,087 Bytes
c993983
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
import os
import csv

class PinchExport:
    def __init__(self):
         pass
    def csv_problem_table(self, problem_table, _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 problem_table:
            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 csv_heat_cascade(self, unfeasible_heat_cascade, hot_utility, heat_cascade, pinch_temperature, 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 unfeasible_heat_cascade:
            cellText.append([str(i), interval['deltaH'], interval['exitH']])
            i = i + 1

        cellText.append(['', '', 'Cold Utility: {} kW'.format(unfeasible_heat_cascade[-1]['exitH'])])
        cellText.append([''])

        cellText.append(['Feasible Heat Cascade: '])
        cellText.append(['', '', 'Hot Utility: {} kW'.format(hot_utility)])
        cellText.append(['Interval', 'Delta H (kW)', 'Exit H (total kW)'])

        i = 1
        for interval in heat_cascade:
            cellText.append([str(i), interval['deltaH'], interval['exitH']])
            i = i + 1

        cellText.append(['', '', 'Cold Utility: {} kW'.format(heat_cascade[-1]['exitH'])])
        cellText.append(['','', 'Pinch Temperature: {} degC'.format(pinch_temperature)])

        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 csv_shifted_composite_diagram(self, newpath, shifted_composite_diagram):
        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(shifted_composite_diagram['hot']['H'])):
                writer.writerow([shifted_composite_diagram['hot']['H'][i],
                    shifted_composite_diagram['hot']['T'][i]])

            writer.writerow([''])
            writer.writerow(['Cold H', 'Cold T'])
            for i in range(0, len(shifted_composite_diagram['cold']['H'])):
                writer.writerow([shifted_composite_diagram['cold']['H'][i],
                    shifted_composite_diagram['cold']['T'][i]])


    def csv_composite_diagram(self, newpath, composite_diagram):
        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(composite_diagram['hot']['H'])):
                writer.writerow([composite_diagram['hot']['H'][i],
                    composite_diagram['hot']['T'][i]])

            writer.writerow([''])
            writer.writerow(['Cold H', 'Cold T'])
            for i in range(0, len(composite_diagram['cold']['H'])):
                writer.writerow([composite_diagram['cold']['H'][i],
                    composite_diagram['cold']['T'][i]])



    def csv_grand_composite_curve(self, newpath, grand_composite_curve):
        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(grand_composite_curve['H'])):
                writer.writerow([grand_composite_curve['H'][i],
                    grand_composite_curve['T'][i]])