Removing package directories.
[PyCIM.git] / CIM14 / IEC61970 / Generation / Production / ThermalGeneratingUnit.py
blobe92d581083852ea1d5d2369c2778d7548db2dc20
1 # Copyright (C) 2010 Richard Lincoln
3 # This library is free software; you can redistribute it and/or
4 # modify it under the terms of the GNU Lesser General Public
5 # License as published by the Free Software Foundation; either
6 # version 2.1 of the License, or (at your option) any later version.
8 # This library is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 # Lesser General Public License for more details.
13 # You should have received a copy of the GNU Lesser General Public
14 # License along with this library; if not, write to the Free Software
15 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA, USA
17 from CIM14.IEC61970.Generation.Production.GeneratingUnit import GeneratingUnit
19 class ThermalGeneratingUnit(GeneratingUnit):
20 """A generating unit whose prime mover could be a steam turbine, combustion turbine, or diesel engine.
21 """
23 def __init__(self, oMCost=0.0, StartupModel=None, EmmissionAccounts=None, CombinedCyclePlant=None, CogenerationPlant=None, EmissionCurves=None, HeatRateCurve=None, ShutdownCurve=None, IncrementalHeatRateCurve=None, FuelAllocationSchedules=None, FossilFuels=None, HeatInputCurve=None, CAESPlant=None, *args, **kw_args):
24 """Initialises a new 'ThermalGeneratingUnit' instance.
26 @param oMCost: Operating and maintenance cost for the thermal unit
27 @param StartupModel: A thermal generating unit may have a startup model
28 @param EmmissionAccounts: A thermal generating unit may have one or more emission allowance accounts
29 @param CombinedCyclePlant: A thermal generating unit may be a member of a combined cycle plant
30 @param CogenerationPlant: A thermal generating unit may be a member of a cogeneration plant
31 @param EmissionCurves: A thermal generating unit may have one or more emission curves
32 @param HeatRateCurve: A thermal generating unit may have a heat rate curve
33 @param ShutdownCurve: A thermal generating unit may have a shutdown curve
34 @param IncrementalHeatRateCurve: A thermal generating unit may have an incremental heat rate curve
35 @param FuelAllocationSchedules: A thermal generating unit may have one or more fuel allocation schedules
36 @param FossilFuels: A thermal generating unit may have one or more fossil fuels
37 @param HeatInputCurve: A thermal generating unit may have a heat input curve
38 @param CAESPlant: A thermal generating unit may be a member of a compressed air energy storage plant
39 """
40 #: Operating and maintenance cost for the thermal unit
41 self.oMCost = oMCost
43 self._StartupModel = None
44 self.StartupModel = StartupModel
46 self._EmmissionAccounts = []
47 self.EmmissionAccounts = [] if EmmissionAccounts is None else EmmissionAccounts
49 self._CombinedCyclePlant = None
50 self.CombinedCyclePlant = CombinedCyclePlant
52 self._CogenerationPlant = None
53 self.CogenerationPlant = CogenerationPlant
55 self._EmissionCurves = []
56 self.EmissionCurves = [] if EmissionCurves is None else EmissionCurves
58 self._HeatRateCurve = None
59 self.HeatRateCurve = HeatRateCurve
61 self._ShutdownCurve = None
62 self.ShutdownCurve = ShutdownCurve
64 self._IncrementalHeatRateCurve = None
65 self.IncrementalHeatRateCurve = IncrementalHeatRateCurve
67 self._FuelAllocationSchedules = []
68 self.FuelAllocationSchedules = [] if FuelAllocationSchedules is None else FuelAllocationSchedules
70 self._FossilFuels = []
71 self.FossilFuels = [] if FossilFuels is None else FossilFuels
73 self._HeatInputCurve = None
74 self.HeatInputCurve = HeatInputCurve
76 self._CAESPlant = None
77 self.CAESPlant = CAESPlant
79 super(ThermalGeneratingUnit, self).__init__(*args, **kw_args)
81 _attrs = ["oMCost"]
82 _attr_types = {"oMCost": float}
83 _defaults = {"oMCost": 0.0}
84 _enums = {}
85 _refs = ["StartupModel", "EmmissionAccounts", "CombinedCyclePlant", "CogenerationPlant", "EmissionCurves", "HeatRateCurve", "ShutdownCurve", "IncrementalHeatRateCurve", "FuelAllocationSchedules", "FossilFuels", "HeatInputCurve", "CAESPlant"]
86 _many_refs = ["EmmissionAccounts", "EmissionCurves", "FuelAllocationSchedules", "FossilFuels"]
88 def getStartupModel(self):
89 """A thermal generating unit may have a startup model
90 """
91 return self._StartupModel
93 def setStartupModel(self, value):
94 if self._StartupModel is not None:
95 self._StartupModel._ThermalGeneratingUnit = None
97 self._StartupModel = value
98 if self._StartupModel is not None:
99 self._StartupModel._ThermalGeneratingUnit = self
101 StartupModel = property(getStartupModel, setStartupModel)
103 def getEmmissionAccounts(self):
104 """A thermal generating unit may have one or more emission allowance accounts
106 return self._EmmissionAccounts
108 def setEmmissionAccounts(self, value):
109 for x in self._EmmissionAccounts:
110 x._ThermalGeneratingUnit = None
111 for y in value:
112 y._ThermalGeneratingUnit = self
113 self._EmmissionAccounts = value
115 EmmissionAccounts = property(getEmmissionAccounts, setEmmissionAccounts)
117 def addEmmissionAccounts(self, *EmmissionAccounts):
118 for obj in EmmissionAccounts:
119 obj._ThermalGeneratingUnit = self
120 self._EmmissionAccounts.append(obj)
122 def removeEmmissionAccounts(self, *EmmissionAccounts):
123 for obj in EmmissionAccounts:
124 obj._ThermalGeneratingUnit = None
125 self._EmmissionAccounts.remove(obj)
127 def getCombinedCyclePlant(self):
128 """A thermal generating unit may be a member of a combined cycle plant
130 return self._CombinedCyclePlant
132 def setCombinedCyclePlant(self, value):
133 if self._CombinedCyclePlant is not None:
134 filtered = [x for x in self.CombinedCyclePlant.ThermalGeneratingUnits if x != self]
135 self._CombinedCyclePlant._ThermalGeneratingUnits = filtered
137 self._CombinedCyclePlant = value
138 if self._CombinedCyclePlant is not None:
139 self._CombinedCyclePlant._ThermalGeneratingUnits.append(self)
141 CombinedCyclePlant = property(getCombinedCyclePlant, setCombinedCyclePlant)
143 def getCogenerationPlant(self):
144 """A thermal generating unit may be a member of a cogeneration plant
146 return self._CogenerationPlant
148 def setCogenerationPlant(self, value):
149 if self._CogenerationPlant is not None:
150 filtered = [x for x in self.CogenerationPlant.ThermalGeneratingUnits if x != self]
151 self._CogenerationPlant._ThermalGeneratingUnits = filtered
153 self._CogenerationPlant = value
154 if self._CogenerationPlant is not None:
155 self._CogenerationPlant._ThermalGeneratingUnits.append(self)
157 CogenerationPlant = property(getCogenerationPlant, setCogenerationPlant)
159 def getEmissionCurves(self):
160 """A thermal generating unit may have one or more emission curves
162 return self._EmissionCurves
164 def setEmissionCurves(self, value):
165 for x in self._EmissionCurves:
166 x._ThermalGeneratingUnit = None
167 for y in value:
168 y._ThermalGeneratingUnit = self
169 self._EmissionCurves = value
171 EmissionCurves = property(getEmissionCurves, setEmissionCurves)
173 def addEmissionCurves(self, *EmissionCurves):
174 for obj in EmissionCurves:
175 obj._ThermalGeneratingUnit = self
176 self._EmissionCurves.append(obj)
178 def removeEmissionCurves(self, *EmissionCurves):
179 for obj in EmissionCurves:
180 obj._ThermalGeneratingUnit = None
181 self._EmissionCurves.remove(obj)
183 def getHeatRateCurve(self):
184 """A thermal generating unit may have a heat rate curve
186 return self._HeatRateCurve
188 def setHeatRateCurve(self, value):
189 if self._HeatRateCurve is not None:
190 self._HeatRateCurve._ThermalGeneratingUnit = None
192 self._HeatRateCurve = value
193 if self._HeatRateCurve is not None:
194 self._HeatRateCurve._ThermalGeneratingUnit = self
196 HeatRateCurve = property(getHeatRateCurve, setHeatRateCurve)
198 def getShutdownCurve(self):
199 """A thermal generating unit may have a shutdown curve
201 return self._ShutdownCurve
203 def setShutdownCurve(self, value):
204 if self._ShutdownCurve is not None:
205 self._ShutdownCurve._ThermalGeneratingUnit = None
207 self._ShutdownCurve = value
208 if self._ShutdownCurve is not None:
209 self._ShutdownCurve._ThermalGeneratingUnit = self
211 ShutdownCurve = property(getShutdownCurve, setShutdownCurve)
213 def getIncrementalHeatRateCurve(self):
214 """A thermal generating unit may have an incremental heat rate curve
216 return self._IncrementalHeatRateCurve
218 def setIncrementalHeatRateCurve(self, value):
219 if self._IncrementalHeatRateCurve is not None:
220 self._IncrementalHeatRateCurve._ThermalGeneratingUnit = None
222 self._IncrementalHeatRateCurve = value
223 if self._IncrementalHeatRateCurve is not None:
224 self._IncrementalHeatRateCurve._ThermalGeneratingUnit = self
226 IncrementalHeatRateCurve = property(getIncrementalHeatRateCurve, setIncrementalHeatRateCurve)
228 def getFuelAllocationSchedules(self):
229 """A thermal generating unit may have one or more fuel allocation schedules
231 return self._FuelAllocationSchedules
233 def setFuelAllocationSchedules(self, value):
234 for x in self._FuelAllocationSchedules:
235 x._ThermalGeneratingUnit = None
236 for y in value:
237 y._ThermalGeneratingUnit = self
238 self._FuelAllocationSchedules = value
240 FuelAllocationSchedules = property(getFuelAllocationSchedules, setFuelAllocationSchedules)
242 def addFuelAllocationSchedules(self, *FuelAllocationSchedules):
243 for obj in FuelAllocationSchedules:
244 obj._ThermalGeneratingUnit = self
245 self._FuelAllocationSchedules.append(obj)
247 def removeFuelAllocationSchedules(self, *FuelAllocationSchedules):
248 for obj in FuelAllocationSchedules:
249 obj._ThermalGeneratingUnit = None
250 self._FuelAllocationSchedules.remove(obj)
252 def getFossilFuels(self):
253 """A thermal generating unit may have one or more fossil fuels
255 return self._FossilFuels
257 def setFossilFuels(self, value):
258 for x in self._FossilFuels:
259 x._ThermalGeneratingUnit = None
260 for y in value:
261 y._ThermalGeneratingUnit = self
262 self._FossilFuels = value
264 FossilFuels = property(getFossilFuels, setFossilFuels)
266 def addFossilFuels(self, *FossilFuels):
267 for obj in FossilFuels:
268 obj._ThermalGeneratingUnit = self
269 self._FossilFuels.append(obj)
271 def removeFossilFuels(self, *FossilFuels):
272 for obj in FossilFuels:
273 obj._ThermalGeneratingUnit = None
274 self._FossilFuels.remove(obj)
276 def getHeatInputCurve(self):
277 """A thermal generating unit may have a heat input curve
279 return self._HeatInputCurve
281 def setHeatInputCurve(self, value):
282 if self._HeatInputCurve is not None:
283 self._HeatInputCurve._ThermalGeneratingUnit = None
285 self._HeatInputCurve = value
286 if self._HeatInputCurve is not None:
287 self._HeatInputCurve._ThermalGeneratingUnit = self
289 HeatInputCurve = property(getHeatInputCurve, setHeatInputCurve)
291 def getCAESPlant(self):
292 """A thermal generating unit may be a member of a compressed air energy storage plant
294 return self._CAESPlant
296 def setCAESPlant(self, value):
297 if self._CAESPlant is not None:
298 self._CAESPlant._ThermalGeneratingUnit = None
300 self._CAESPlant = value
301 if self._CAESPlant is not None:
302 self._CAESPlant._ThermalGeneratingUnit = self
304 CAESPlant = property(getCAESPlant, setCAESPlant)