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
.Core
.Curve
import Curve
19 class HeatInputCurve(Curve
):
20 """Relationship between unit heat input in energy per time for main fuel (Y1-axis) and supplemental fuel (Y2-axis) versus unit output in active power (X-axis). The quantity of main fuel used to sustain generation at this output level is prorated for throttling between definition points. The quantity of supplemental fuel used at this output level is fixed and not prorated.
23 def __init__(self
, heatInputEff
=0.0, auxPowerMult
=0.0, heatInputOffset
=0.0, isNetGrossP
=False, auxPowerOffset
=0.0, ThermalGeneratingUnit
=None, *args
, **kw_args
):
24 """Initialises a new 'HeatInputCurve' instance.
26 @param heatInputEff: Heat input - efficiency multiplier adjustment factor.
27 @param auxPowerMult: Power output - auxiliary power multiplier adjustment factor.
28 @param heatInputOffset: Heat input - offset adjustment factor.
29 @param isNetGrossP: Flag is set to true when output is expressed in net active power
30 @param auxPowerOffset: Power output - auxiliary power offset adjustment factor
31 @param ThermalGeneratingUnit: A thermal generating unit may have a heat input curve
33 #: Heat input - efficiency multiplier adjustment factor.
34 self
.heatInputEff
= heatInputEff
36 #: Power output - auxiliary power multiplier adjustment factor.
37 self
.auxPowerMult
= auxPowerMult
39 #: Heat input - offset adjustment factor.
40 self
.heatInputOffset
= heatInputOffset
42 #: Flag is set to true when output is expressed in net active power
43 self
.isNetGrossP
= isNetGrossP
45 #: Power output - auxiliary power offset adjustment factor
46 self
.auxPowerOffset
= auxPowerOffset
48 self
._ThermalGeneratingUnit
= None
49 self
.ThermalGeneratingUnit
= ThermalGeneratingUnit
51 super(HeatInputCurve
, self
).__init
__(*args
, **kw_args
)
53 _attrs
= ["heatInputEff", "auxPowerMult", "heatInputOffset", "isNetGrossP", "auxPowerOffset"]
54 _attr_types
= {"heatInputEff": float, "auxPowerMult": float, "heatInputOffset": float, "isNetGrossP": bool, "auxPowerOffset": float}
55 _defaults
= {"heatInputEff": 0.0, "auxPowerMult": 0.0, "heatInputOffset": 0.0, "isNetGrossP": False, "auxPowerOffset": 0.0}
57 _refs
= ["ThermalGeneratingUnit"]
60 def getThermalGeneratingUnit(self
):
61 """A thermal generating unit may have a heat input curve
63 return self
._ThermalGeneratingUnit
65 def setThermalGeneratingUnit(self
, value
):
66 if self
._ThermalGeneratingUnit
is not None:
67 self
._ThermalGeneratingUnit
._HeatInputCurve
= None
69 self
._ThermalGeneratingUnit
= value
70 if self
._ThermalGeneratingUnit
is not None:
71 self
._ThermalGeneratingUnit
._HeatInputCurve
= self
73 ThermalGeneratingUnit
= property(getThermalGeneratingUnit
, setThermalGeneratingUnit
)