Package hec.rss.model
Class OpRule
java.lang.Object
java.util.Observable
hec.lang.NamedType
hec.rss.model.RssTSLocationObject
hec.rss.model.OpRule
- All Implemented Interfaces:
AsciiSerializable,FieldAccessor,TSLocation,AltInputReportInfc,RssModelVariableConstants,RssReturnStatusConstants,RssTSLocation,Serializable,Cloneable,Comparable,Observer,rma.lang.Modifiable
- Direct Known Subclasses:
DiversionDemandOpRule,ElevReleaseOpRule,FlowLimitOpRule,GCOpRule,InducedSurchargeOpRule,InputTSBasedOpRule,PhysMaxOpRule,PhysMinOpRule,PrescribedOpRule,PumpOpRule,RateChangeElevLimitOpRule,RateChangeLimitOpRule,ReleaseFuncOpRule,ReleaseFunctionInflowOpRule,ScheduledHydropowerOpRule,ScriptOpRule,SpecFlowOpRule,SystemHydropowerOpRule,SystemHydropowerRule,TandemOpParent,TandemOpRule,TandemSysOpRule,VariableTSBasedOpRule,ZBOpRule
Operating rule utilized by OpController objects.
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected intprotected booleanprotected DayOfWeekMultiplierprotected intprotected intprotected doubleprotected RssSystemprotected TimeOfDayMultiplierprotected booleanprotected booleanprotected booleanstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intDemand rule type flagstatic final intfree rule type flag - indicates value unconstrained by a rulestatic final intMaximum rule type flagstatic final intMinimum rule type flagstatic final intSpecified rule type flagFields 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_OFFSETFields inherited from interface hec.rss.model.RssReturnStatusConstants
RTN_CANCELED, RTN_NOPROBLEM, RTN_OPCHANGE, RTN_PROBLEM -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidapplies specific hindcast data for computebooleanIf Rising-Falling condition is enabled for rule, check whether the OpRule should applyclone()clone methoddoublevoidevaluateLimits(RunTimeStep rts, int iteration) default implementation calls the old method without the iteration argument 2007-12-27evaluateRule(RunTimeStep rts, double initialValue) compares the intial value to rule constraints and returns the adjusted valueevaluateRule(RunTimeStep rts, double initialValue, int iteration) compares the intial value to rule constraints and returns the adjusted valueevaluateRule(RunTimeStep rts, double initialValue, int iteration, boolean evalDownstream) 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 compute.intget the OpRules ControllerdoubleGet multiplier factor for the day, accounting for day of the weekdoublegets the demand scale used for firm yield analysisvoidgetElementDependencies(List elemList) adds elements upon which the current rule depends to the given list.booleangetFieldObject(Field fld) This method allows access to java.lang.reflect.Field objects within the implementing class.intget the GMT offsetTakes a object of class Element, Function, RssNode, OpController, or OpRule and returns a unique string identifying that object pass request to RssSystem This should be a TSLocation methoddoubleGet largest multiplier factor for any day, accounting for day of the weekdoubleReturns a new Day of Week Multiplier objectget the ResSim NetworkgetObjectForKeyString(String keystr) Takes a key string and returns the object of class Element, Function, Node, OpController, or OpRule Pass request to RssSystem This should be a TSLocation methodreturns the element associated with this rule.getOpValue(RunTimeStep rts) intdoublegetPriority(RunTimeStep rts) Get the rule priority value for the given time step.voidgetReferencedStateVariables(List svlist) adds StateVariables refereced by this rule to the given listreturns the TSRecordProxies required by operating rules default implementation is to not add any proxies to the listDeprecated.use getOperationsElement()intdoublegets the RssSystem from the reservoir element that this rule belongs tointget the limit type of this rule should be implemented by all subclasses of OpRuleget the ResSim Networkreturns the TSRecordProxy for the time series that is the target for this rule operation.doubleReturns a Time Of Day Multiplier objectintget the unit system in usebooleanPrepares this run for post processing in the ResSim Simulation Module.booleanprep for computeintinitOperationStep(RunTimeStep rts, int iteration) initialization call before each operation step, or before recomputing operations with different optionsbooleanisActive(RunTimeStep rts) returns true if this rule is active (included in the zone rules of the current OpSet for the parent ReservoirOp).booleanreturns true if this rule is a downstream rulebooleanreturns true if this rule is local to a reservoirbooleanreturns true if this rule uses period average evaluationvoidoutputReport(AlternativeInputReport report, org.jdom.Element elem) Alternative Input Report Interface for data.voidvoidrestoreFunctionState(int stateid) restore the state of the rule matching the given identifier - default behavior is to do nothingvoidrestoreHotstartState(OpControllerHotstartState opControllerHotstartState) booleancheck completeness of rise-fall condition datavoidsaveFunctionState(int stateid) save the current state of the rule with the given identifier - default behavior is to do nothingvoidsaveHotstartState(HotstartState parentState, int stateId) voidsetAveragingPeriod(int seconds) voidsetController(OpController controller) voidsetDemandScale(double scl) sets the demand scale used for firm yield analysisvoidsetEnableRiseFallCondition(boolean tf) booleansetFieldObject(Field fld, Object fobj) This allows access to fields withing the implementing object to set there data.voidSets the Day of Week MulitpliervoidsetParameterType(int type) voidsetPeriodAverageLimit(boolean tf) voidsetPriority(RunTimeStep rts, double p) voidsetRiseFallCondition(int type) voidsetRiseFallTolerance(double tol) voidvoidSets the Time of Day MulitpliervoidsetUseDayOfWeekMultiplier(boolean tf) Set flag for Day Of Week MultipliervoidsetUseDemandScale(boolean b) set the flag to use demand scale for firm yield analysisvoidsetUsePeriodAverageLimit(boolean tf) Set flag for period average limit usevoidsetUseTimeOfDayMultiplier(boolean tf) Set flag for Time Of Day MultipliertoString()return the String representation of the OpRule.voidupdateByDemandScale(double scl) voidRegenerates the list of all TSProxies required for this location.booleanReturns true if Day Of Week Multiplier to be usedbooleanreturn flag to use demand scale for firm yield analysisbooleanbooleanReturns true if Time Of Day Multiplier to be usedMethods 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
-
_multiplier
-
_timeOfDayMultiplier
-
_useDayOfWeekMultiplier
protected boolean _useDayOfWeekMultiplier -
_useTimeOfDayMultiplier
protected boolean _useTimeOfDayMultiplier -
_usePeriodAverageLimit
protected boolean _usePeriodAverageLimit -
_enableRiseFallCond
protected boolean _enableRiseFallCond -
_riseFallCondition
protected int _riseFallCondition -
_avgPeriod
protected int _avgPeriod -
_riseFallTolerance
protected double _riseFallTolerance -
_parameterType
protected int _parameterType -
_system
-
NONE
public static final int NONE- See Also:
-
RISING
public static final int RISING- See Also:
-
RISING_OR_CONST
public static final int RISING_OR_CONST- See Also:
-
FALLING_OR_CONST
public static final int FALLING_OR_CONST- See Also:
-
FALLING
public static final int FALLING- See Also:
-
POOL_ELEVATION
public static final int POOL_ELEVATION- See Also:
-
INFLOW
public static final int INFLOW- See Also:
-
RULETYPE_DEMAND
public static final int RULETYPE_DEMANDDemand rule type flag- See Also:
-
RULETYPE_MAX
public static final int RULETYPE_MAXMaximum rule type flag- See Also:
-
RULETYPE_SPEC
public static final int RULETYPE_SPECSpecified rule type flag- See Also:
-
RULETYPE_MIN
public static final int RULETYPE_MINMinimum rule type flag- See Also:
-
RULETYPE_FREE
public static final int RULETYPE_FREEfree rule type flag - indicates value unconstrained by a rule- See Also:
-
-
Constructor Details
-
OpRule
public OpRule() -
OpRule
-
OpRule
-
-
Method Details
-
computeStepLimit
-
setPriority
-
getPriority
Get the rule priority value for the given time step. Highest priority is 0 (hard constraint), increasing value indicates lower priority. Priority invalid input: '<' 0 indicates the rule is not active for this time step.- Parameters:
rts-- Returns:
- rule priority value
-
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. -
updateByDemandScale
public void updateByDemandScale(double scl) -
setUseDemandScale
public void setUseDemandScale(boolean b) set the flag to use demand scale for firm yield analysis -
useDemandScale
public boolean useDemandScale()return flag to use demand scale for firm yield analysis- Returns:
- flag to use demand scale for firm yield analysis
-
setDemandScale
public void setDemandScale(double scl) sets the demand scale used for firm yield analysis -
getDemandScale
public double getDemandScale()gets the demand scale used for firm yield analysis -
getElementDependencies
adds elements upon which the current rule depends to the given list. Does not add the element that owns this rule. Default behavior is to add nothing to the list. Subclasses must override this method. -
getOpValue
-
getPowerOpValue
-
evaluateLimits
default implementation calls the old method without the iteration argument 2007-12-27- Parameters:
rts-iteration-
-
evaulatePerformance
post processing immediately following compute to evalute performance- Parameters:
rtw-
-
getRuleLimitType
public int getRuleLimitType()get the limit type of this rule should be implemented by all subclasses of OpRule -
getActiveTSRecordProxies
add the time series record proxies associated current compute. subclassses that over-ride this method should also call this method- Overrides:
getActiveTSRecordProxiesin classRssTSLocationObject
-
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 sub-classes of OpRule may over-ride this method if they use TSRecordProxies but should also call this method- Specified by:
updateTSProxyListin classRssTSLocationObject
-
getTSProxyName
-
getReferencedStateVariables
adds StateVariables refereced by this rule to the given list- Parameters:
svlist- unique list of state variables
-
getRequiredTSRecordProxies
returns the TSRecordProxies required by operating rules default implementation is to not add any proxies to the list -
saveFunctionState
public void saveFunctionState(int stateid) save the current state of the rule with the given identifier - default behavior is to do nothing- Parameters:
stateid- identifier for the state
-
restoreFunctionState
public void restoreFunctionState(int stateid) restore the state of the rule matching the given identifier - default behavior is to do nothing- Parameters:
stateid- identifier for the state
-
getOperationsElement
returns the element associated with this rule.- Returns:
- the element associated with this rule
-
getReservoirElement
Deprecated.use getOperationsElement()returns the element, Reservoir or Diversion, that this rule is operating for. Here for backward compatibility with previous versions of ResSim (pre 4.0)- Returns:
- the Element this rule operations for
-
isActive
returns true if this rule is active (included in the zone rules of the current OpSet for the parent ReservoirOp).- Parameters:
rts- The RunTimeStep at which the test is made
-
setSystem
-
getSystem
get the ResSim Network- Specified by:
getSystemin classRssTSLocationObject- Returns:
- the ResSim Network
-
getNetwork
get the ResSim Network- Returns:
- the ResSim Network
-
applyHindcastData
applies specific hindcast data for compute -
toString
return the String representation of the OpRule. -
resetChildOwnership
public void resetChildOwnership() -
getGmtOffset
public int getGmtOffset()get the GMT offset- Returns:
- the GMT Offset
-
getUnitSystem
public int getUnitSystem()get the unit system in use- Returns:
- the unit system
-
clone
Description copied from class:RssTSLocationObjectclone method- Overrides:
clonein classRssTSLocationObject
-
initializeCompute
public boolean initializeCompute()prep for compute -
initForPostProcessing
public boolean initForPostProcessing()Prepares this run for post processing in the ResSim Simulation Module. This routing sets up all data model connectivity, but does not load time series arrays.- Returns:
- RTN_NOPROBLEM if successful
-
initOperationStep
initialization call before each operation step, or before recomputing operations with different options -
evaluateRule
public OpValue evaluateRule(RunTimeStep rts, double initialValue, int iteration, boolean evalDownstream) compares the intial value to rule constraints and returns the adjusted value -
evaluateRule
compares the intial value to rule constraints and returns the adjusted value -
evaluateRule
compares the intial value to rule constraints and returns the adjusted value -
setController
-
getController
get the OpRules Controller- Returns:
- the OpController that owns the OpRule
-
isLocalRule
public boolean isLocalRule()returns true if this rule is local to a reservoir- Returns:
- default is true
-
isDnstrmRule
public boolean isDnstrmRule()returns true if this rule is a downstream rule- Returns:
- default is false
-
isPerAvgRule
public boolean isPerAvgRule()returns true if this rule uses period average evaluation- Returns:
- default is false
-
getKeyStringForObject
Takes a object of class Element, Function, RssNode, OpController, or OpRule and returns a unique string identifying that object pass request to RssSystem This should be a TSLocation method -
getObjectForKeyString
Takes a key string and returns the object of class Element, Function, Node, OpController, or OpRule Pass request to RssSystem This should be a TSLocation method -
getRssSystem
gets the RssSystem from the reservoir element that this rule belongs to- Returns:
- the ResSim network
-
checkRisingFallingCondition
If Rising-Falling condition is enabled for rule, check whether the OpRule should apply -
riseFallConditionIsValid
public boolean riseFallConditionIsValid()check completeness of rise-fall condition data -
setEnableRiseFallCondition
public void setEnableRiseFallCondition(boolean tf) -
getEnableRiseFallCondition
public boolean getEnableRiseFallCondition() -
setRiseFallCondition
public void setRiseFallCondition(int type) -
getRiseFallCondition
public int getRiseFallCondition() -
setAveragingPeriod
public void setAveragingPeriod(int seconds) -
getAveragingPeriod
public int getAveragingPeriod() -
setRiseFallTolerance
public void setRiseFallTolerance(double tol) -
getRiseFallTolerance
public double getRiseFallTolerance() -
setParameterType
public void setParameterType(int type) -
getParameterType
public int getParameterType() -
useDayOfWeekMultiplier
public boolean useDayOfWeekMultiplier()Returns true if Day Of Week Multiplier to be used -
setUseDayOfWeekMultiplier
public void setUseDayOfWeekMultiplier(boolean tf) Set flag for Day Of Week Multiplier -
setPeriodAverageLimit
public void setPeriodAverageLimit(boolean tf) -
getMultiplier
Returns a new Day of Week Multiplier object -
setMultiplier
Sets the Day of Week Mulitplier -
getDayOfWeekFactor
Get multiplier factor for the day, accounting for day of the week -
getLargestDayOfWeekFactor
public double getLargestDayOfWeekFactor()Get largest multiplier factor for any day, accounting for day of the week -
useTimeOfDayMultiplier
public boolean useTimeOfDayMultiplier()Returns true if Time Of Day Multiplier to be used -
usePeriodAverageLimit
public boolean usePeriodAverageLimit() -
setUseTimeOfDayMultiplier
public void setUseTimeOfDayMultiplier(boolean tf) Set flag for Time Of Day Multiplier -
setUsePeriodAverageLimit
public void setUsePeriodAverageLimit(boolean tf) Set flag for period average limit use- Parameters:
tf-
-
getTimeOfDayMultiplier
Returns a Time Of Day Multiplier object -
setTimeOfDayMultiplier
Sets the Time of Day Mulitplier -
getTimeOfDayFactor
-
getLargestTimeOfDayFactor
public double getLargestTimeOfDayFactor() -
saveHotstartState
-
restoreHotstartState
-
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 classRssTSLocationObject- 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 classRssTSLocationObject- 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
-