Package hec.rss.model
Class DownstreamCntrlOpRule
java.lang.Object
java.util.Observable
hec.lang.NamedType
hec.rss.model.RssTSLocationObject
hec.rss.model.OpRule
hec.rss.model.ReleaseFuncOpRule
hec.rss.model.DownstreamOpRule
hec.rss.model.DownstreamCntrlOpRule
- All Implemented Interfaces:
AsciiSerializable,FieldAccessor,TSLocation,DemandRuleInf,AltInputReportInfc,RssModelVariableConstants,RssReturnStatusConstants,RssTSLocation,Serializable,Cloneable,Comparable,Observer,rma.lang.Modifiable
Reservoir release as a function of a downstream control limit
- See Also:
-
Nested Class Summary
Nested Classes -
Field Summary
Fields inherited from class hec.rss.model.DownstreamOpRule
_downstreamOptions, DSCONTINGENCY_CONST, DSCONTINGENCY_VARIABLE, FLOW_PARAMETER, FLOW_PARAMETER_STR, STAGE_PARAMETER, STAGE_PARAMETER_STRFields inherited from class hec.rss.model.ReleaseFuncOpRule
_limitType, _patternContainer, DAILY, DEMAND, MAX, MIN, NONE, SPECIFIED, WEEKLYFields inherited from class hec.rss.model.OpRule
_avgPeriod, _enableRiseFallCond, _multiplier, _parameterType, _riseFallCondition, _riseFallTolerance, _system, _timeOfDayMultiplier, _useDayOfWeekMultiplier, _usePeriodAverageLimit, _useTimeOfDayMultiplier, FALLING, FALLING_OR_CONST, INFLOW, 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.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
ConstructorsConstructorDescriptionDownstreamCntrlOpRule(String name) DownstreamCntrlOpRule(String name, int dnstrmNodeIndex) -
Method Summary
Modifier and TypeMethodDescriptionvoidcopyParentInto(DownstreamOpRule parentRule) voidevaluateLimits(RunTimeStep rts, int iteration) do nothingevaluateRule(RunTimeStep rts, double initialValue, int iteration, boolean evalDownstream) evaluates the rule with or without activation of downstream decisionvoidpost processing immediately following compute to evalute performancegetActiveTSRecordProxies(Vector vec, int iotype) add the time series record proxies associated current computevoidgetElementDependencies(List elemList) adds elements upon which the current rule depends to the given list.getFieldObject(Field fld) Called just before ascii serialization.intgetOpValue(RunTimeStep rts) returns the operation value based on the previously computed rule limit.intdoublegetPriority(RunTimeStep rts) Get the rule priority value for the given time step.intget the limit type of this rule should be implemented by all subclasses of OpRuleGets the water account.booleanPrepares this run for post processing in the ResSim Simulation Module.booleancalled before compute by OpControllerbooleanreturns true if this rule is a downstream rulebooleanreturns true if this rule is local to a reservoirbooleanbooleanreturns true if this rule uses period average evaluationvoidoutputReport(AlternativeInputReport report, org.jdom.Element elem) Alternative Input Report Interface for data.booleansetFieldObject(Field fld, Object fobj) This allows access to fields withing the implementing object to set there data.voidsetLowerLimitZone(String zoneName) voidvoidsetOpValue(RunTimeStep rts, OpValue ov) voidsetParentRuleIndex(int i) voidsetPassThru(boolean b) voidsetPriority(RunTimeStep rts, double p) voidsetReRegAvgPeriod(Double period) voidsetUpperLimitZone(String zoneName) voidSets the water account.voidRegenerates the list of all TSProxies required for this location.Methods inherited from class hec.rss.model.DownstreamOpRule
addChildRule, clearForCompute, clone, closeForecast, computeFlowLimit, computeFlowLimit_old, copyChildInto, copyInto, evaluateLimits32, evaluateSysBalance, evaluateSysLimits, getActiveDownstreamOptions, getContingencyConstant, getContingencyPV, getContingencyType, getDefaultDownstreamOptions, getDownstreamControlLocationID, getDownstreamControlParameter, getDownStreamOptions, getLargestLimitValue, getLimitValue, getManagedElements, getNumRouteSteps, getReservoirPassThru, getReservoirs, getResIntLag, getTargetTSRecordProxy, getTSRecordProxyResVar, getTSRecordProxyVecResVar, initForPostProcessing, initialize, removeRuleRef, setContingencyConstant, setContingencyPV, setContingencyType, setDefaultDownstreamOptions, setDownstreamControlLocationID, setDownstreamControlParameter, setDownStreamOptions, setUseDefaultDSOptions, setUsesContingency, useDefaultDSOptions, usesContingencyMethods inherited from class hec.rss.model.ReleaseFuncOpRule
evaluateRule, getFunctionRelease, getIndependentVariable, getLimitType, getPatternContainer, getPeriod, getReferencedStateVariables, getRequiredTSRecordProxies, getSeasonalRecord, getStartingDay, getTimeInterpolationType, setFunctionRelease, setIndependentVariable, setLimitType, setPatternContainer, setPeriod, setSeasonalRecord, setStartingDay, setTimeInterpolationType, updateByDemandScaleMethods inherited from class hec.rss.model.OpRule
applyHindcastData, checkRisingFallingCondition, computeStepLimit, evaluateRule, getAveragingPeriod, getController, getDayOfWeekFactor, getDemandScale, getEnableRiseFallCondition, getGmtOffset, getKeyStringForObject, getLargestDayOfWeekFactor, getLargestTimeOfDayFactor, getMultiplier, getNetwork, getObjectForKeyString, getOperationsElement, getParameterType, getPowerOpValue, getReservoirElement, getRiseFallCondition, getRiseFallTolerance, getRssSystem, getSystem, getTimeOfDayFactor, getTimeOfDayMultiplier, getTSProxyName, getUnitSystem, initOperationStep, isActive, resetChildOwnership, restoreFunctionState, restoreHotstartState, riseFallConditionIsValid, saveFunctionState, saveHotstartState, setAveragingPeriod, setController, setDemandScale, setEnableRiseFallCondition, setMultiplier, setParameterType, setPeriodAverageLimit, setRiseFallCondition, setRiseFallTolerance, setSystem, setTimeOfDayMultiplier, setUseDayOfWeekMultiplier, setUseDemandScale, setUsePeriodAverageLimit, setUseTimeOfDayMultiplier, toString, 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
-
Constructor Details
-
DownstreamCntrlOpRule
public DownstreamCntrlOpRule() -
DownstreamCntrlOpRule
-
DownstreamCntrlOpRule
-
-
Method Details
-
evaulatePerformance
post processing immediately following compute to evalute performance- Overrides:
evaulatePerformancein classDownstreamOpRule- Parameters:
rtw-
-
getElementDependencies
adds elements upon which the current rule depends to the given list. Does not add the element that owns this rule.- Overrides:
getElementDependenciesin classReleaseFuncOpRule
-
evaluateLimits
do nothing- Overrides:
evaluateLimitsin classDownstreamOpRule- Parameters:
rts-iteration-
-
setOpValue
-
getOpValue
returns the operation value based on the previously computed rule limit. As of 12/04- Overrides:
getOpValuein classReleaseFuncOpRule- Parameters:
rts-- Returns:
-
isLocalRule
public boolean isLocalRule()returns true if this rule is local to a reservoir- Overrides:
isLocalRulein classReleaseFuncOpRule- Returns:
-
isDnstrmRule
public boolean isDnstrmRule()returns true if this rule is a downstream rule- Overrides:
isDnstrmRulein classReleaseFuncOpRule- Returns:
-
isPerAvgRule
public boolean isPerAvgRule()returns true if this rule uses period average evaluation- Overrides:
isPerAvgRulein classReleaseFuncOpRule- Returns:
- default is false
-
getMaxRoutingSteps
public int getMaxRoutingSteps() -
getPriorityLimit
-
evaluateRule
public OpValue evaluateRule(RunTimeStep rts, double initialValue, int iteration, boolean evalDownstream) evaluates the rule with or without activation of downstream decision- Overrides:
evaluateRulein classOpRule- Parameters:
rts- current time stepinitialValue- initial flow valueevalDownstream- flag to either perform or not perform downstream decision- Returns:
- OpValue representing the limit created by this rule
-
initializeCompute
public boolean initializeCompute()called before compute by OpController- Overrides:
initializeComputein classReleaseFuncOpRule- Returns:
-
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.- Overrides:
initForPostProcessingin classOpRule- Returns:
- true if successful
-
setParentRuleIndex
public void setParentRuleIndex(int i) -
getParentRuleIndex
public int getParentRuleIndex() -
getDownstreamOp
-
getParentRule
-
copyParentInto
-
getRuleLimitType
public int getRuleLimitType()get the limit type of this rule should be implemented by all subclasses of OpRule- Overrides:
getRuleLimitTypein classReleaseFuncOpRule
-
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 classDownstreamOpRule
-
getActiveTSRecordProxies
add the time series record proxies associated current compute- Overrides:
getActiveTSRecordProxiesin classDownstreamOpRule
-
getFieldObject
Description copied from class:ReleaseFuncOpRuleCalled just before ascii serialization. Prepares the paired data values by setting there dss record path names- Specified by:
getFieldObjectin interfaceFieldAccessor- Overrides:
getFieldObjectin classDownstreamOpRule- 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 classDownstreamOpRule- 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 classReleaseFuncOpRule
-
getWaterAccount
Description copied from interface:DemandRuleInfGets the water account.- Specified by:
getWaterAccountin interfaceDemandRuleInf- Overrides:
getWaterAccountin classReleaseFuncOpRule- Returns:
- the water account
-
setWaterAccount
Description copied from interface:DemandRuleInfSets the water account.- Specified by:
setWaterAccountin interfaceDemandRuleInf- Overrides:
setWaterAccountin classReleaseFuncOpRule- Parameters:
wa- the new water account
-
isPassThru
public boolean isPassThru() -
setPassThru
public void setPassThru(boolean b) -
setOperationType
-
getOperationType
-
setUpperLimitZone
-
getUpperLimitZone
-
setLowerLimitZone
-
getLowerLimitZone
-
setReRegAvgPeriod
-
getReRegAvgPeriod
-
setPriority
- Overrides:
setPriorityin classOpRule
-
getPriority
Description copied from class:OpRuleGet 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.- Overrides:
getPriorityin classOpRule- Parameters:
rts-- Returns:
- rule priority value
-