Package hec.rss.model
Class PowerPlant
java.lang.Object
java.util.Observable
hec.lang.NamedType
hec.rss.model.PowerPlant
- All Implemented Interfaces:
AsciiSerializable,FieldAccessor,AltInputReportInfc,RssModelVariableConstants,Serializable,Cloneable,Comparable,Observer,rma.lang.Modifiable
- Direct Known Subclasses:
ReversiblePlant
Title: HEC JavaDev
Description:
Copyright:
Company: RMA
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic doublestatic final doublestatic final doublestatic final intstatic final intFields inherited from class hec.lang.NamedType
_description, _ignoreModifiedEvents, _index, _isValid, _modified, _name, defaultDescription, defaultName, DESCRIPTION_CHANGED, NAME_CHANGED, RENAME_EVENTFields inherited from interface hec.rss.model.RssModelVariableConstants
CUMLOC_OUTPUT_DATA, GRPID_DIVERSION, GRPID_JUNCTION, GRPID_REACH, GRPID_RESERVOIR, HINDCAST_IDS, HOLDOUT_OUTPUT_DATA, INPUT_DATA, OUTPUT_DATA, PULSE_OUTPUT_DATA, UNREG_OUTPUT_DATA, VID_ADJPARAM_FLOW, VID_CAPACITY_FACTOR, VID_CTRLOUT_HINDFLW, VID_CTRLOUT_RELEASE, VID_DAM_LEAK, VID_DAM_RELEASE, VID_DIV_FLOW, VID_DIV_FLOW_ROUTED, VID_DIV_HINDFLW, VID_DIV_RELEASE, VID_DIVOUT_FLOW, VID_DIVOUT_FLOW_ROUTED, VID_ENERGYREQUIRED_TSINPUT, VID_FIRST, VID_FOREBAY_ELEV, VID_FOREBAY_HEADLOSS, VID_GATE_OPENING, VID_GATE_PERCENTOPEN, VID_JUNC_ELEV, VID_JUNC_FLOW_CUMLOC, VID_JUNC_FLOW_DIV, VID_JUNC_FLOW_HOLD, VID_JUNC_FLOW_IN, VID_JUNC_FLOW_LIMIT, VID_JUNC_FLOW_LOCAL, VID_JUNC_FLOW_PULSE, VID_JUNC_FLOW_REG, VID_JUNC_FLOW_UNREG, VID_JUNC_FLOW_VIOL, VID_JUNC_HINDFLOW, VID_JUNC_INFLOW, VID_JUNC_INFLOW_LOCAL_TOTAL, VID_JUNC_STAGE, VID_JUNC_STAGE_LIMIT, VID_JUNC_STAGE_REG, VID_JUNC_STAGE_UNREG, VID_JUNC_STAGE_VIOL, VID_LAST, VID_NODE_FLOW, VID_NODE_HINDFLW, VID_NODE_HINDSTG, VID_NODE_KNOWNFLOW, VID_NODE_STAGE, VID_OPCTRL_CONSTRAINTID, VID_OPCTRL_DECISION, VID_OPCTRL_MAXLIMIT, VID_OPCTRL_MINLIMIT, VID_OPCTRL_RULEID, VID_OPCTRL_ZONEID, VID_OPRULE_FLOW_SPACE, VID_OPRULE_MAX, VID_OPRULE_MAX_STAGE, VID_OPRULE_MIN, VID_OPRULE_MIN_STAGE, VID_OPRULE_PRIORITY, VID_OPRULE_ROUTE_LAG, VID_OPRULE_ROUTE_MAXOFFSET, VID_OPRULE_ROUTE_MINOFFSET, VID_OPRULE_SPEC, VID_OPRULE_STOR_BAL, VID_OPRULE_STOR_BAL_INDEX, VID_OPRULE_VIOL_ELEV, VID_OPRULE_VIOL_FLOW, VID_OPRULE_VIOL_STAGE, VID_OPRULE_VIOL_STOR, VID_OPRULE_WQCD_ELEV, VID_OPRULEFL_CUMLOC, VID_OPRULETS_TSINPUT, VID_OPSET_ACTIVEZONE, VID_OPSET_GC_ELEV, VID_OPSET_GC_STOR, VID_OPSET_KNOWNZONEELEV, VID_OPSET_PROJECTEDELEV, VID_OPSET_ZONEELEV, VID_OPSET_ZONESTOR, VID_OUTGRP_RELEASE, VID_POOL_AREA, VID_POOL_ELEV, VID_POOL_ELEV_EST, VID_POOL_ELEVROC, VID_POOL_EVAP, VID_POOL_FLOWINTOSTOR, VID_POOL_HINDELEV, VID_POOL_HINDSTOR, VID_POOL_HOLDOUT, VID_POOL_INFLOW, VID_POOL_INPUTEVAP, VID_POOL_NETINFLOW, VID_POOL_OUTFLOW, VID_POOL_OUTFLOW_EST, VID_POOL_SEEP, VID_POOL_STOR, VID_PULSE_BACKQ, VID_PULSE_PULSEQ, VID_PUMP_FLOWAVG, VID_PUMP_VOL, VID_PUMPRULE_FLOWAVG, VID_PUMPRULE_FLOWAVG_CAP, VID_PUMPRULE_FLOWINST, VID_PUMPRULE_FLOWINST_CAP, VID_PUMPRULE_HOURS, VID_PUMPRULE_HOURS_CAP, VID_PUMPRULE_NUMPUMP, VID_PUMPRULE_NUMPUMP_CAP, VID_PUMPRULE_UNITHOURS, VID_PUMPRULE_UNITHOURS_CAP, VID_PUMPRULE_VOL, VID_PUMPRULE_VOL_CAP, VID_PWR_CAPABILITY, VID_PWR_EFF, VID_PWR_ENGYGEN, VID_PWR_ENGYPATTERN, VID_PWR_ENGYPERGEN, VID_PWR_ENGYPERREQD, VID_PWR_ENGYREQD, VID_PWR_ENGYVIOL, VID_PWR_FLWPWR, VID_PWR_HDPWR, VID_PWR_HYDLSS, VID_PWR_MAXCAPACITY, VID_PWR_PER_BALGEN, VID_PWR_PER_GCGEN, VID_PWR_PER_MINPUMPGEN, VID_PWR_PER_MINRELGEN, VID_PWR_PER_POWGEN, VID_PWR_PER_PUMPGEN, VID_PWR_PLNTFAC, VID_PWR_PWRCAP, VID_PWR_REQUIRED, VID_PWR_SPILL, VID_PWR_VIOL, VID_RCH_SEEP, VID_REACH_FLOW_CUMLOC, VID_REACH_FLOW_IN, VID_REACH_FLOW_REG, VID_REACH_FLOW_UNREG, VID_RES_GCRELEASE, VID_RES_HOLDOUT, VID_RES_RELEASE, VID_SPILL_FLOW, VID_SPILL_HINDFLOW, VID_STATE_VAR, VID_STATE_VAR_HIND, VID_TAIL_ELEV, VID_UNCTOUT_FLOW, VID_UNCTOUT_HINDFLW, VID_WA_ACCOUNT_DEMAND, VID_WA_ACCOUNT_INFLOW, VID_WA_CHARGES, VID_WA_CREDIT, VID_WA_CURRENT_MAX_VOLUME, VID_WA_CURRENT_VOLUME, VID_WA_HINDSTOR, VID_WA_LOSSES, VID_WA_PUMPBACK, VID_WA_RULE_DEMAND, VID_WA_SURPLUS, VID_WA_TRANSFERS, WQID_OFFSET -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptiondoublecalcEfficiency(double elev, double head, double flow) Calculate the power plant efficiency for the given parameters.doublecalcMaxCapability(double elev, double head, double initMinFlow, double initMaxFlow) Calculate the power plant generation capability for the given reservoir elevation and head.doublecalcRelForMinEff(double efficiency, double poolElev, double pwrplantHead, double release) This method calculates and adjusted release if the minimum efficiency restriction is imposed for this power plant.doublecalculateAvailablePowerCapacity(double poolElev, double tailwaterElev) Calculate available power generation capacity given reservoir pool elevation, tailwater elevation and penstock flow capacitydoublecalculatePower(double pwrplantQ, double poolElev, double tailwaterElev) Generalized power computation for given flow, reservoir pool elevation and tailwater elevation.doublecalculatePower(double pwrplantQ, double poolElev, double tailwaterElev, boolean clipAtMaxCap) Generalized power computation for given flow, reservoir pool elevation and tailwater elevation.booleanCheck that sufficient parameters set to perform computeclone()clone methoddoublecomputePower(RunTimeStep runtime, double poolElev, double outflow) Computes power generation for the given time step, pool elevation, and power outlet flow.Find storage element.voidgetActiveTSRecordProxies(Vector vec, int iotype) add the time series record proxies associated current computedoubledoublegetCapacity(double elev, double head, double flow) get capacity by method.End of Operating Limits Getters and SettersintdoubledoublevoidgetConstHydLoss(hec.data.ParamDouble d) voidgetConstStationUse(hec.data.ParamDouble d) double[]intdoublegetFieldObject(Field fld) This method allows access to java.lang.reflect.Field objects within the implementing class.intdoubledoublegetMaxCapacity(double poolElev, double twElev) Get power capacity from constant value or compute max capacity for reservoir elevation.doublegetMaxCapacity(RunTimeStep runtime, double poolElev) protected StringdoubledoublegetPoolElevation(RunTimeStep runtime) Get the associated pool elevation for the power plant Use current runtime step if data is available, else use BOP value.doublegetRequiredRelease(double reqPower, double poolElev, double tailwaterElev) Calculate the power plant release needed to meet the generation requirement for the given reservoir elevation and head.doublegetRequiredReleaseOld(double powerCapacity, double poolElev, double tailwaterElev) Compute release required for given power capacity.doubledoubleOperating Limits Getters and SettersintdoublegetTailwaterElevation(RunTimeStep runtime) Get the associated tailwater elevation for the power plant Use current runtime step if data is available, else use BOP value.booleanbooleanbooleanbooleanvoidoutputReport(AlternativeInputReport report, org.jdom.Element elem) Alternative Input Report Interface for data.static doublepowerEquation(double flow, double head, double eff) Compute power in MW from flow, head, and efficiency.voidvoidsetCapacity(double d) voidvoidvoidvoidvoidsetCapacityMethod(int m) voidsetConstCapacity(double d) voidsetConstEfficiency(double d) voidsetConstHydLoss(hec.data.ParamDouble d) voidsetConstStationUse(hec.data.ParamDouble d) voidvoidvoidvoidsetEfficiencyHillCurveTurbineInflows(double[] efficiencyHillCurveTurbineInflows) voidsetEfficiencyMethod(int m) voidsetEfficiencyRelease(double efficiencyRelease) voidsetEfficientByHillCurve(PairedValuesExt efficientByHillCurve) booleansetFieldObject(Field fld, Object fobj) This allows access to fields withing the implementing object to set there data.voidvoidsetHydLossMethod(int m) voidsetIsEfficiencyRelease(boolean isEfficiencyRelease) voidsetIsRestrictMaximum(boolean isRestrictMaximum) voidsetIsRestrictMinimum(boolean isRestrictMinimum) voidsetOverload(double d) voidsetRestrictMaximum(double restrictMaximum) voidsetRestrictMinimum(double restrictMinimum) voidvoidsetStationUseMethod(int m) voidvoidRegenerates the list of all TSProxies required for this location.Methods inherited from class hec.lang.NamedType
addModifiableListener, compareTo, fireModifiedStateChanged, getDescription, getDisplayName, getIgnoreModifiedEvents, getIndex, getName, isModified, isValid, readResolve, removeModifiableListener, rename, set, setDescription, setIgnoreModifiedEvents, setIndex, setModified, setName, setValid, toString, update, useRecursiveModifiedTestMethods inherited from class java.util.Observable
addObserver, clearChanged, countObservers, deleteObserver, deleteObservers, hasChanged, notifyObservers, notifyObservers, setChanged
-
Field Details
-
EFFC_CONST
public static final int EFFC_CONST- See Also:
-
EFFC_BY_ELEV
public static final int EFFC_BY_ELEV- See Also:
-
EFFC_BY_REL
public static final int EFFC_BY_REL- See Also:
-
EFFC_BY_HEAD
public static final int EFFC_BY_HEAD- See Also:
-
EFFC_BY_HILLCURVE
public static final int EFFC_BY_HILLCURVE- See Also:
-
SUSE_CONST
public static final int SUSE_CONST- See Also:
-
SUSE_BY_REL
public static final int SUSE_BY_REL- See Also:
-
HLOSS_CONST
public static final int HLOSS_CONST- See Also:
-
HLOSS_BY_REL
public static final int HLOSS_BY_REL- See Also:
-
CAPACITY_CONST
public static final int CAPACITY_CONST- See Also:
-
CAPACITY_BY_ELEV
public static final int CAPACITY_BY_ELEV- See Also:
-
CAPACITY_BY_STORAGE
public static final int CAPACITY_BY_STORAGE- See Also:
-
CAPACITY_BY_REL
public static final int CAPACITY_BY_REL- See Also:
-
CAPACITY_BY_HEAD
public static final int CAPACITY_BY_HEAD- See Also:
-
KW_CONST_ENGLISH
public static final double KW_CONST_ENGLISH- See Also:
-
KW_CONST_SI
public static final double KW_CONST_SI- See Also:
-
KW_CONST
public static double KW_CONST
-
-
Constructor Details
-
PowerPlant
public PowerPlant() -
PowerPlant
-
-
Method Details
-
getOutputBPart
-
setupForSerialization
public void setupForSerialization() -
initialize
public boolean initialize() -
computePower
Computes power generation for the given time step, pool elevation, and power outlet flow. Also saves data to output arrays. Called during computeForecastStep and computeHincastStep from parent AdjustableFlow element.- Parameters:
runtime- steppoolElev-outflow-- Returns:
- power generation in MW
-
calculatePower
public double calculatePower(double pwrplantQ, double poolElev, double tailwaterElev) Generalized power computation for given flow, reservoir pool elevation and tailwater elevation. Power capacity will not be greater than max capacity. Calculated values are not saved to output arrays.- Parameters:
poolElev-tailwater- elevationpower- outlet flow- Returns:
- power generation in MW
-
calculatePower
public double calculatePower(double pwrplantQ, double poolElev, double tailwaterElev, boolean clipAtMaxCap) Generalized power computation for given flow, reservoir pool elevation and tailwater elevation. Power capacity will not be greater than max capacity if clipAtMaxCap flag is true. Calculated values are not saved to output arrays.- Parameters:
poolElev-tailwater- elevationpower- outlet flow- Returns:
- power generation in MW
-
powerEquation
public static double powerEquation(double flow, double head, double eff) Compute power in MW from flow, head, and efficiency. Input units depended on global unit system setting- Parameters:
flow- (cfs or cms)head- (ft or m)eff- (fraction, 0-1.0)- Returns:
-
calculateAvailablePowerCapacity
public double calculateAvailablePowerCapacity(double poolElev, double tailwaterElev) Calculate available power generation capacity given reservoir pool elevation, tailwater elevation and penstock flow capacity -
getRequiredRelease
public double getRequiredRelease(double reqPower, double poolElev, double tailwaterElev) Calculate the power plant release needed to meet the generation requirement for the given reservoir elevation and head. Will return the release that generates maximum power if requirement cannot be met.- Parameters:
required- power generation (MW)pool- elevationtailwater- elevation- Returns:
- required release
-
getRequiredReleaseOld
public double getRequiredReleaseOld(double powerCapacity, double poolElev, double tailwaterElev) Compute release required for given power capacity. powerCapacity in MW -
calcRelForMinEff
public double calcRelForMinEff(double efficiency, double poolElev, double pwrplantHead, double release) This method calculates and adjusted release if the minimum efficiency restriction is imposed for this power plant.- Parameters:
efficiency- , initial efficiency for the given parameterspoolElev-pwrplantHead-release-- Returns:
- the adjusted release
-
getCapacityMethod
public int getCapacityMethod() -
setCapacityMethod
public void setCapacityMethod(int m) -
getEfficiencyMethod
public int getEfficiencyMethod() -
setEfficiencyMethod
public void setEfficiencyMethod(int m) -
getStationUseMethod
public int getStationUseMethod() -
setStationUseMethod
public void setStationUseMethod(int m) -
getHydLossMethod
public int getHydLossMethod() -
setHydLossMethod
public void setHydLossMethod(int m) -
calcEfficiency
public double calcEfficiency(double elev, double head, double flow) Calculate the power plant efficiency for the given parameters. The calculation method is determined by the _efficiencyMethod data member.- Parameters:
elev-head-flow-- Returns:
- efficiency as a fraction (0 to 1.0)
-
calcMaxCapability
public double calcMaxCapability(double elev, double head, double initMinFlow, double initMaxFlow) Calculate the power plant generation capability for the given reservoir elevation and head. Capability if the maximum generation that could be achieved for the current condition with optimum release through the power plant.- Parameters:
elev-head-initFlow- , starting flow value for search- Returns:
- power generation
-
getCapacity
public double getCapacity(double elev, double head, double flow) get capacity by method. Either constant or variable capacity by elevation, storage, head or release- Parameters:
elev-head- after any hydraulic lossesflow- after any station use- Returns:
-
findTailwaterElevation
-
getTailwaterElevation
Get the associated tailwater elevation for the power plant Use current runtime step if data is available, else use BOP value.- Parameters:
runtime-- Returns:
-
getAssociatedTailwater
-
getPoolElevation
Get the associated pool elevation for the power plant Use current runtime step if data is available, else use BOP value. Average EOP and BOP for period average run.- Parameters:
runtime-- Returns:
-
findStorage
Find storage element. Needed if capacity is a function of storage.- Returns:
-
getStationUseByRelease
-
setStationUseByRelease
-
getHydLossByRelease
-
setHydLossByRelease
-
getEfficiencyByElev
-
setEfficiencyByElev
-
getEfficiencyByRelease
-
setEfficiencyByRelease
-
getEfficiencyByOpHead
-
setEfficiencyByOpHead
-
getConstHydLoss
public void getConstHydLoss(hec.data.ParamDouble d) -
setConstHydLoss
public void setConstHydLoss(hec.data.ParamDouble d) -
getConstStationUse
public void getConstStationUse(hec.data.ParamDouble d) -
setConstStationUse
public void setConstStationUse(hec.data.ParamDouble d) -
getConstEfficiency
public double getConstEfficiency() -
setConstEfficiency
public void setConstEfficiency(double d) -
getOverload
public double getOverload() -
setOverload
public void setOverload(double d) -
getCapacity
public double getCapacity() -
setCapacity
public void setCapacity(double d) -
getConstCapacity
public double getConstCapacity() -
setConstCapacity
public void setConstCapacity(double d) -
getRestrictMinimum
public double getRestrictMinimum()Operating Limits Getters and Setters -
setRestrictMinimum
public void setRestrictMinimum(double restrictMinimum) -
getEfficiencyRelease
public double getEfficiencyRelease() -
setEfficiencyRelease
public void setEfficiencyRelease(double efficiencyRelease) -
getRestrictMaximum
public double getRestrictMaximum() -
setRestrictMaximum
public void setRestrictMaximum(double restrictMaximum) -
isRestrictMinimum
public boolean isRestrictMinimum() -
setIsRestrictMinimum
public void setIsRestrictMinimum(boolean isRestrictMinimum) -
isEfficiencyRelease
public boolean isEfficiencyRelease() -
setIsEfficiencyRelease
public void setIsEfficiencyRelease(boolean isEfficiencyRelease) -
isRestrictMaximum
public boolean isRestrictMaximum() -
setIsRestrictMaximum
public void setIsRestrictMaximum(boolean isRestrictMaximum) -
getCapacityByElev
End of Operating Limits Getters and Setters -
setCapacityByElev
-
getCapacityByStorage
-
setCapacityByStorage
-
getCapacityByRelease
-
setCapacityByRelease
-
getCapacityByOpHead
-
setCapacityByOpHead
-
getEfficientByHillCurve
-
setEfficientByHillCurve
-
getEfficiencyHillCurveTurbineInflows
public double[] getEfficiencyHillCurveTurbineInflows() -
setEfficiencyHillCurveTurbineInflows
public void setEfficiencyHillCurveTurbineInflows(double[] efficiencyHillCurveTurbineInflows) -
getAdjustableFlow
-
setAdjustableFlow
-
canCompute
public boolean canCompute()Check that sufficient parameters set to perform compute- Returns:
-
getInstalledCapacity
public double getInstalledCapacity() -
getMaxCapacity
-
getMaxCapacity
public double getMaxCapacity(double poolElev, double twElev) Get power capacity from constant value or compute max capacity for reservoir elevation.- Parameters:
poolElev-twElev-- Returns:
-
clone
clone method -
getActiveTSRecordProxies
add the time series record proxies associated current compute -
updateTSProxyList
public void updateTSProxyList()Regenerates the list of all TSProxies required for this location. This list includes all records that are generated by this function even if the records are held in another objects (e.g. RssNode) proxy list -
getFieldObject
Description copied from interface:FieldAccessorThis method allows access to java.lang.reflect.Field objects within the implementing class.- Specified by:
getFieldObjectin interfaceFieldAccessor- Overrides:
getFieldObjectin classNamedType- Parameters:
fld- The field to get.- Returns:
- The data object that is stored in the given field
-
setFieldObject
Description copied from interface:FieldAccessorThis allows access to fields withing the implementing object to set there data.- Specified by:
setFieldObjectin interfaceFieldAccessor- Overrides:
setFieldObjectin classNamedType- Parameters:
fld- The java field object representing the member field to be setfobj- The data to set in that field- Returns:
- returns true if successful
-
outputReport
Description copied from interface:AltInputReportInfcAlternative Input Report Interface for data.- Specified by:
outputReportin interfaceAltInputReportInfc
-