Package hec.rss.model
Class ScheduledHydropowerOpRule
java.lang.Object
java.util.Observable
hec.lang.NamedType
hec.rss.model.RssTSLocationObject
hec.rss.model.OpRule
hec.rss.model.ScheduledHydropowerOpRule
- All Implemented Interfaces:
AsciiSerializable,FieldAccessor,TSLocation,DemandRuleInf,PowerGenerationOptions,AltInputReportInfc,RssModelVariableConstants,RssReturnStatusConstants,RssTSLocation,Serializable,Cloneable,Comparable,Observer,rma.lang.Modifiable
- Direct Known Subclasses:
FirmEnergyOpRule,PeakingPowerTsOpRule,PowerGuideCurveOpRule
public class ScheduledHydropowerOpRule
extends OpRule
implements AsciiSerializable, Serializable, Cloneable, PowerGenerationOptions, DemandRuleInf
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected List<PowerPlant> protected SeasonalRecordprotected intprotected intprotected booleanThe following stuff is common to the SystemHydropowerOpRule.protected PowerGenerationPatternContainerprotected intprotected intprotected intprotected intprotected booleanprotected booleanstatic final intFields inherited from class hec.rss.model.OpRule
_avgPeriod, _enableRiseFallCond, _multiplier, _parameterType, _riseFallCondition, _riseFallTolerance, _system, _timeOfDayMultiplier, _useDayOfWeekMultiplier, _usePeriodAverageLimit, _useTimeOfDayMultiplier, FALLING, FALLING_OR_CONST, INFLOW, NONE, POOL_ELEVATION, RISING, RISING_OR_CONST, RULETYPE_DEMAND, RULETYPE_FREE, RULETYPE_MAX, RULETYPE_MIN, RULETYPE_SPECFields 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.PowerGenerationOptions
GENERATION_PERIOD_DAILY, GENERATION_PERIOD_TIMESTEP, GENERATION_PERIOD_WEEKLY, MONTHLY_VARIATION, REQ_SPECIFIED_DAILY, REQ_SPECIFIED_MONTHLY, REQ_SPECIFIED_PLANT_FACTOR, REQ_SPECIFIED_SEASONALLY, REQ_SPECIFIED_WEEKLY, SEASONAL_VARIATIONFields 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_OFFSETFields inherited from interface hec.rss.model.RssReturnStatusConstants
RTN_CANCELED, RTN_NOPROBLEM, RTN_OPCHANGE, RTN_PROBLEM -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionclone()clone methodvoidevaluateLimits(RunTimeStep rts, int iteration) calculates the limiting value for this rule for the given time step.evaluateRule(RunTimeStep rts, double initialValue) compares the intial value to rule constraints and returns the adjusted valuevoidpost processing immediately following compute to evalute performancegetActiveTSRecordProxies(Vector vec, int iotype) add the time series record proxies associated current computeprotected AdjustableFlowGet the power plant associated with this ruleintprotected doublegetEnergyReguirement(RunTimeStep rts, double poolElevation) this should be overridden in subclassgetFieldObject(Field fld) This method allows access to java.lang.reflect.Field objects within the implementing class.intSets the way the model will attempt to meet the gereration requiremnt at period (TIME-STEP, DAILY, WEEKLY).protected static intgetLastDayOfMonth(HecTime hecTime) return the last day for the calendar monthdoublegetMonthlyEnergyCapacity(int imonth) Return the plant capacity * hours in the month in MWhgetOpValue(RunTimeStep rts) returns the operation value based on the previously computed rule limit.protected List<PowerPlant> Get the power plant associated with this ruleintintReturns the Power Generation required variation.intget the limit type of this rule should be implemented by all subclasses of OpRuleintintreturns the TSRecordProxy for the time series that is the target for this rule operation.Gets the water account.booleanprep for computevoidoutputReport(AlternativeInputReport report, org.jdom.Element elem) Alternative Input Report Interface for data.voidsetDayBelongsToTerm(int startDay) booleansetFieldObject(Field fld, Object fobj) This allows access to fields withing the implementing object to set there data.voidsetGenerationPeriod(int period) Sets the way the model will attempt to meet the gereration requiremnt at period (TIME-STEP, DAILY, WEEKLY).voidsetPowerReqSpecification(int req) Sets a flag to show how the power requirement is specified.voidsetRequirementVariation(int var) Sets the Power Generation required variation.voidsetStartDayOfPeriod(int startDay) voidsetStartingDay(int startDay) voidSets the water account.voidRegenerates the list of all TSProxies required for this location.Methods inherited from class hec.rss.model.OpRule
applyHindcastData, checkRisingFallingCondition, computeStepLimit, evaluateRule, evaluateRule, getAveragingPeriod, getController, getDayOfWeekFactor, getDemandScale, getElementDependencies, getEnableRiseFallCondition, getGmtOffset, getKeyStringForObject, getLargestDayOfWeekFactor, getLargestTimeOfDayFactor, getMultiplier, getNetwork, getObjectForKeyString, getOperationsElement, getParameterType, getPriority, getReferencedStateVariables, getRequiredTSRecordProxies, getReservoirElement, getRiseFallCondition, getRiseFallTolerance, getRssSystem, getSystem, getTimeOfDayFactor, getTimeOfDayMultiplier, getTSProxyName, getUnitSystem, initForPostProcessing, initOperationStep, isActive, isDnstrmRule, isLocalRule, isPerAvgRule, resetChildOwnership, restoreFunctionState, restoreHotstartState, riseFallConditionIsValid, saveFunctionState, saveHotstartState, setAveragingPeriod, setController, setDemandScale, setEnableRiseFallCondition, setMultiplier, setParameterType, setPeriodAverageLimit, setPriority, setRiseFallCondition, setRiseFallTolerance, setSystem, setTimeOfDayMultiplier, setUseDayOfWeekMultiplier, setUseDemandScale, setUsePeriodAverageLimit, setUseTimeOfDayMultiplier, toString, updateByDemandScale, useDayOfWeekMultiplier, useDemandScale, usePeriodAverageLimit, useTimeOfDayMultiplierMethods inherited from class hec.rss.model.RssTSLocationObject
addTSRecord, addTSRecordProxy, addTSRecordProxy, addTSRecordProxy, clearTSProxyList, copyInto, getComputedTSRecordProxies, getTSArray, getTSArray, getTSArray, getTSArray, getTSContainer, getTSContainer, getTSDataSet, getTSRecordProxies, getTSRecordProxy, getTSRecordProxy, getTSRecordProxy, getTSRecordProxy, getTSRecordProxy, getTSRecordProxyVec, removeTSRecord, removeTSRecordProxy, removeTSRecordProxyMethods 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, update, useRecursiveModifiedTestMethods inherited from class java.util.Observable
addObserver, clearChanged, countObservers, deleteObserver, deleteObservers, hasChanged, notifyObservers, notifyObservers, setChanged
-
Field Details
-
UNDEFINED
public static final int UNDEFINED- See Also:
-
m_independantPowerReq
protected boolean m_independantPowerReqThe following stuff is common to the SystemHydropowerOpRule. Might want to think about putting in a supper class. -
m_usePlantFactor
protected boolean m_usePlantFactor -
m_systemPwrGenSeasonal
protected boolean m_systemPwrGenSeasonal -
m_patternContainer
-
_seasonalPowerRequirement
-
m_powerReqVariation
protected int m_powerReqVariation -
m_powerReqSpecifiedAs
protected int m_powerReqSpecifiedAs -
m_startingDay
protected int m_startingDay -
m_dayBelongsToTerm
protected int m_dayBelongsToTerm -
m_startDayOfPeriod
protected int m_startDayOfPeriod -
m_generationPeriod
protected int m_generationPeriod -
_plantList
-
-
Constructor Details
-
ScheduledHydropowerOpRule
public ScheduledHydropowerOpRule() -
ScheduledHydropowerOpRule
-
-
Method Details
-
getTargetTSRecordProxy
returns the TSRecordProxy for the time series that is the target for this rule operation. Comparison of the target to the rule limit allows determination as to whether the rule was satisfied.- Overrides:
getTargetTSRecordProxyin classOpRule
-
evaluateLimits
calculates the limiting value for this rule for the given time step. as of 12/04- Overrides:
evaluateLimitsin classOpRule- Parameters:
rts-iteration-
-
getOpValue
returns the operation value based on the previously computed rule limit. As of 12/04- Overrides:
getOpValuein classOpRule- Parameters:
rts-- Returns:
-
getPowerOpValue
- Overrides:
getPowerOpValuein classOpRule
-
evaulatePerformance
post processing immediately following compute to evalute performance- Overrides:
evaulatePerformancein classOpRule- Parameters:
rtw-
-
getPowerPatternContainer
-
setRequirementVariation
public void setRequirementVariation(int var) Sets the Power Generation required variation. It is either SEASONAL or MONTHLY. A IllegalArgumentException is thrown if the input value is not recognized.- Specified by:
setRequirementVariationin interfacePowerGenerationOptions- Parameters:
var-
-
getRequirementVariation
public int getRequirementVariation()Returns the Power Generation required variation.- Specified by:
getRequirementVariationin interfacePowerGenerationOptions- Returns:
-
setStartingDay
public void setStartingDay(int startDay) - Specified by:
setStartingDayin interfacePowerGenerationOptions
-
getStartingDay
public int getStartingDay()- Specified by:
getStartingDayin interfacePowerGenerationOptions
-
getDayBelongsToTerm
public int getDayBelongsToTerm()- Specified by:
getDayBelongsToTermin interfacePowerGenerationOptions
-
setDayBelongsToTerm
public void setDayBelongsToTerm(int startDay) - Specified by:
setDayBelongsToTermin interfacePowerGenerationOptions
-
getStartDayOfPeriod
public int getStartDayOfPeriod()- Specified by:
getStartDayOfPeriodin interfacePowerGenerationOptions
-
setStartDayOfPeriod
public void setStartDayOfPeriod(int startDay) - Specified by:
setStartDayOfPeriodin interfacePowerGenerationOptions
-
setGenerationPeriod
public void setGenerationPeriod(int period) Sets the way the model will attempt to meet the gereration requiremnt at period (TIME-STEP, DAILY, WEEKLY). The valid values are GENERATION_PERIOD_DAILY, GENERATION_PERIOD_TIMESTEP, invalid input: '&' GENERATION_PERIOD_WEEKLY. If any other value is passed in, an illegal argument exception is thrown.- Specified by:
setGenerationPeriodin interfacePowerGenerationOptions- Parameters:
period-
-
setPowerReqSpecification
public void setPowerReqSpecification(int req) Sets a flag to show how the power requirement is specified. The ONLY valid values are plant factor, daily, weekly, monthly, seasonally. Used the defined constants for this class.- Specified by:
setPowerReqSpecificationin interfacePowerGenerationOptions- Parameters:
req-
-
getPowerReqSpecification
public int getPowerReqSpecification()- Specified by:
getPowerReqSpecificationin interfacePowerGenerationOptions
-
getGenerationPeriod
public int getGenerationPeriod()Sets the way the model will attempt to meet the gereration requiremnt at period (TIME-STEP, DAILY, WEEKLY). The valid values are GENERATION_PERIOD_DAILY, GENERATION_PERIOD_TIMESTEP, invalid input: '&' GENERATION_PERIOD_WEEKLY. If any other value is passed in, an illegal argument exception is thrown.- Specified by:
getGenerationPeriodin interfacePowerGenerationOptions
-
initializeCompute
public boolean initializeCompute()prep for compute- Overrides:
initializeComputein classOpRule
-
evaluateRule
compares the intial value to rule constraints and returns the adjusted value- Overrides:
evaluateRulein classOpRule
-
getEnergyReguirement
this should be overridden in subclass -
getPowerPlantList
Get the power plant associated with this rule -
getAdjustableFlow
Get the power plant associated with this rule -
getMonthlyEnergyCapacity
public double getMonthlyEnergyCapacity(int imonth) Return the plant capacity * hours in the month in MWh -
clone
Description copied from class:RssTSLocationObjectclone method -
getLastDayOfMonth
return the last day for the calendar month -
getRuleLimitType
public int getRuleLimitType()get the limit type of this rule should be implemented by all subclasses of OpRule- Overrides:
getRuleLimitTypein classOpRule
-
getActiveTSRecordProxies
add the time series record proxies associated current compute- Overrides:
getActiveTSRecordProxiesin classOpRule
-
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- Overrides:
updateTSProxyListin classOpRule
-
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 classOpRule- 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 classOpRule- 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- Overrides:
outputReportin classOpRule
-
getWaterAccount
Description copied from interface:DemandRuleInfGets the water account.- Specified by:
getWaterAccountin interfaceDemandRuleInf- Returns:
- the water account
-
setWaterAccount
Description copied from interface:DemandRuleInfSets the water account.- Specified by:
setWaterAccountin interfaceDemandRuleInf- Parameters:
wa- the new water account
-