Removing package directories.
[PyCIM.git] / CIM14 / IEC61970 / Generation / Production / HydroGeneratingUnit.py
blob8372814531df588a51862971da2f5560988061a3
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 HydroGeneratingUnit(GeneratingUnit):
20 """A generating unit whose prime mover is a hydraulic turbine (e.g., Francis, Pelton, Kaplan)
21 """
23 def __init__(self, energyConversionCapability="generator", hydroUnitWaterCost=0.0, HydroPowerPlant=None, PenstockLossCurve=None, HydroGeneratingEfficiencyCurves=None, TailbayLossCurve=None, *args, **kw_args):
24 """Initialises a new 'HydroGeneratingUnit' instance.
26 @param energyConversionCapability: Energy conversion capability for generating. Values are: "generator", "pumpAndGenerator"
27 @param hydroUnitWaterCost: The equivalent cost of water that drives the hydro turbine, expressed as cost per volume.
28 @param HydroPowerPlant: The hydro generating unit belongs to a hydro power plant
29 @param PenstockLossCurve: A hydro generating unit has a penstock loss curve
30 @param HydroGeneratingEfficiencyCurves: A hydro generating unit has an efficiency curve
31 @param TailbayLossCurve: A hydro generating unit has a tailbay loss curve
32 """
33 #: Energy conversion capability for generating. Values are: "generator", "pumpAndGenerator"
34 self.energyConversionCapability = energyConversionCapability
36 #: The equivalent cost of water that drives the hydro turbine, expressed as cost per volume.
37 self.hydroUnitWaterCost = hydroUnitWaterCost
39 self._HydroPowerPlant = None
40 self.HydroPowerPlant = HydroPowerPlant
42 self._PenstockLossCurve = None
43 self.PenstockLossCurve = PenstockLossCurve
45 self._HydroGeneratingEfficiencyCurves = []
46 self.HydroGeneratingEfficiencyCurves = [] if HydroGeneratingEfficiencyCurves is None else HydroGeneratingEfficiencyCurves
48 self._TailbayLossCurve = []
49 self.TailbayLossCurve = [] if TailbayLossCurve is None else TailbayLossCurve
51 super(HydroGeneratingUnit, self).__init__(*args, **kw_args)
53 _attrs = ["energyConversionCapability", "hydroUnitWaterCost"]
54 _attr_types = {"energyConversionCapability": str, "hydroUnitWaterCost": float}
55 _defaults = {"energyConversionCapability": "generator", "hydroUnitWaterCost": 0.0}
56 _enums = {"energyConversionCapability": "HydroEnergyConversionKind"}
57 _refs = ["HydroPowerPlant", "PenstockLossCurve", "HydroGeneratingEfficiencyCurves", "TailbayLossCurve"]
58 _many_refs = ["HydroGeneratingEfficiencyCurves", "TailbayLossCurve"]
60 def getHydroPowerPlant(self):
61 """The hydro generating unit belongs to a hydro power plant
62 """
63 return self._HydroPowerPlant
65 def setHydroPowerPlant(self, value):
66 if self._HydroPowerPlant is not None:
67 filtered = [x for x in self.HydroPowerPlant.HydroGeneratingUnits if x != self]
68 self._HydroPowerPlant._HydroGeneratingUnits = filtered
70 self._HydroPowerPlant = value
71 if self._HydroPowerPlant is not None:
72 self._HydroPowerPlant._HydroGeneratingUnits.append(self)
74 HydroPowerPlant = property(getHydroPowerPlant, setHydroPowerPlant)
76 def getPenstockLossCurve(self):
77 """A hydro generating unit has a penstock loss curve
78 """
79 return self._PenstockLossCurve
81 def setPenstockLossCurve(self, value):
82 if self._PenstockLossCurve is not None:
83 self._PenstockLossCurve._HydroGeneratingUnit = None
85 self._PenstockLossCurve = value
86 if self._PenstockLossCurve is not None:
87 self._PenstockLossCurve._HydroGeneratingUnit = self
89 PenstockLossCurve = property(getPenstockLossCurve, setPenstockLossCurve)
91 def getHydroGeneratingEfficiencyCurves(self):
92 """A hydro generating unit has an efficiency curve
93 """
94 return self._HydroGeneratingEfficiencyCurves
96 def setHydroGeneratingEfficiencyCurves(self, value):
97 for x in self._HydroGeneratingEfficiencyCurves:
98 x._HydroGeneratingUnit = None
99 for y in value:
100 y._HydroGeneratingUnit = self
101 self._HydroGeneratingEfficiencyCurves = value
103 HydroGeneratingEfficiencyCurves = property(getHydroGeneratingEfficiencyCurves, setHydroGeneratingEfficiencyCurves)
105 def addHydroGeneratingEfficiencyCurves(self, *HydroGeneratingEfficiencyCurves):
106 for obj in HydroGeneratingEfficiencyCurves:
107 obj._HydroGeneratingUnit = self
108 self._HydroGeneratingEfficiencyCurves.append(obj)
110 def removeHydroGeneratingEfficiencyCurves(self, *HydroGeneratingEfficiencyCurves):
111 for obj in HydroGeneratingEfficiencyCurves:
112 obj._HydroGeneratingUnit = None
113 self._HydroGeneratingEfficiencyCurves.remove(obj)
115 def getTailbayLossCurve(self):
116 """A hydro generating unit has a tailbay loss curve
118 return self._TailbayLossCurve
120 def setTailbayLossCurve(self, value):
121 for x in self._TailbayLossCurve:
122 x._HydroGeneratingUnit = None
123 for y in value:
124 y._HydroGeneratingUnit = self
125 self._TailbayLossCurve = value
127 TailbayLossCurve = property(getTailbayLossCurve, setTailbayLossCurve)
129 def addTailbayLossCurve(self, *TailbayLossCurve):
130 for obj in TailbayLossCurve:
131 obj._HydroGeneratingUnit = self
132 self._TailbayLossCurve.append(obj)
134 def removeTailbayLossCurve(self, *TailbayLossCurve):
135 for obj in TailbayLossCurve:
136 obj._HydroGeneratingUnit = None
137 self._TailbayLossCurve.remove(obj)