Package hec.rss.model
Class ReleaseFuncOpRule
java.lang.Object
java.util.Observable
hec.lang.NamedType
hec.rss.model.RssTSLocationObject
hec.rss.model.OpRule
hec.rss.model.ReleaseFuncOpRule
- All Implemented Interfaces:
AsciiSerializable,FieldAccessor,TSLocation,DemandRuleInf,AltInputReportInfc,RssModelVariableConstants,RssReturnStatusConstants,RssTSLocation,Serializable,Cloneable,Comparable,Observer,rma.lang.Modifiable
- Direct Known Subclasses:
DownstreamOpRule,ReRegRule,WaterQualityOpRule
public class ReleaseFuncOpRule
extends OpRule
implements AsciiSerializable, Serializable, Cloneable, DemandRuleInf
Reservoir release as a function of other reservoir parameter
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected intprotected PowerGenerationPatternContainerstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic 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, 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
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, int iteration) compares the intial value to rule constraints and returns the adjusted valuegetActiveTSRecordProxies(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.doubleintreturns the integer type of the limit: -1=Min, 1=MaxdoublegetLimitValue(RunTimeStep rts) getOpValue(RunTimeStep rts) returns the operation value based on the previously computed rule limit.intPeriod for Period Average LimitvoidgetReferencedStateVariables(List svlist) adds StateVariables refereced by this rule to the given listreturns the TSRecordProxies required by independent variable proxies are only included if they are associated with elements that are not downstream of this reservoir - if they are downstream, then the dependency is accomodated by extending the iterationBlock in the ordering logicintget the limit type of this rule should be implemented by all subclasses of OpRulerule is a function of date or date/timeintreturns the TSRecordProxy for the time series that is the target for this rule operation.intGets the water account.booleanprep for computebooleanreturns 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.booleansetFieldObject(Field fld, Object fobj) This allows access to fields withing the implementing object to set there data.voidvoidsetIndependentVariable(IndependentVariable independentVariable) voidsetLimitType(int type) sets the limit type, must ether -1=Min or 1=Max, 0 Specified or 2 DemandvoidvoidsetPeriod(int period) voidvoidsetStartingDay(int startingDay) voidsetTimeInterpolationType(int type) Type of interpolation of values in timevoidSets the water account.voidupdateByDemandScale(double scl) voidRegenerates the list of all TSProxies required for this location.Methods inherited from class hec.rss.model.OpRule
applyHindcastData, checkRisingFallingCondition, computeStepLimit, evaluateRule, evaluateRule, evaulatePerformance, getAveragingPeriod, getController, getDayOfWeekFactor, getDemandScale, getEnableRiseFallCondition, getGmtOffset, getKeyStringForObject, getLargestDayOfWeekFactor, getLargestTimeOfDayFactor, getMultiplier, getNetwork, getObjectForKeyString, getOperationsElement, getParameterType, getPowerOpValue, getPriority, getReservoirElement, getRiseFallCondition, getRiseFallTolerance, getRssSystem, getSystem, getTimeOfDayFactor, getTimeOfDayMultiplier, getTSProxyName, getUnitSystem, initForPostProcessing, initOperationStep, isActive, resetChildOwnership, restoreFunctionState, restoreHotstartState, riseFallConditionIsValid, saveFunctionState, saveHotstartState, setAveragingPeriod, setController, setDemandScale, setEnableRiseFallCondition, setMultiplier, setParameterType, setPeriodAverageLimit, setPriority, 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
-
Field Details
-
MIN
public static final int MIN- See Also:
-
MAX
public static final int MAX- See Also:
-
SPECIFIED
public static final int SPECIFIED- See Also:
-
DEMAND
public static final int DEMAND- See Also:
-
NONE
public static final int NONE- See Also:
-
DAILY
public static final int DAILY- See Also:
-
WEEKLY
public static final int WEEKLY- See Also:
-
_limitType
protected int _limitType -
_patternContainer
-
-
Constructor Details
-
ReleaseFuncOpRule
public ReleaseFuncOpRule() -
ReleaseFuncOpRule
-
-
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
-
updateByDemandScale
public void updateByDemandScale(double scl) - Overrides:
updateByDemandScalein classOpRule
-
getElementDependencies
adds elements upon which the current rule depends to the given list. Does not add the element that owns this rule.- Overrides:
getElementDependenciesin 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:
-
isLocalRule
public boolean isLocalRule()returns true if this rule is local to a reservoir- Overrides:
isLocalRulein classOpRule- Returns:
-
isDnstrmRule
public boolean isDnstrmRule()returns true if this rule is a downstream rule- Overrides:
isDnstrmRulein classOpRule- Returns:
-
isPerAvgRule
public boolean isPerAvgRule()returns true if this rule uses period average evaluation- Overrides:
isPerAvgRulein classOpRule- Returns:
- default is false
-
getPatternContainer
-
setPatternContainer
-
getRuleLimitType
public int getRuleLimitType()get the limit type of this rule should be implemented by all subclasses of OpRule- Overrides:
getRuleLimitTypein classOpRule
-
getReferencedStateVariables
adds StateVariables refereced by this rule to the given list- Overrides:
getReferencedStateVariablesin classOpRule- Parameters:
svlist- unique list of state variables
-
getRequiredTSRecordProxies
returns the TSRecordProxies required by independent variable proxies are only included if they are associated with elements that are not downstream of this reservoir - if they are downstream, then the dependency is accomodated by extending the iterationBlock in the ordering logic- Overrides:
getRequiredTSRecordProxiesin 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
-
getPeriod
public int getPeriod()Period for Period Average Limit- Returns:
- period
-
getStartingDay
public int getStartingDay()- Returns:
- starting day of period index for Period Average Limit
-
getActiveTSRecordProxies
add the time series record proxies associated current compute- Overrides:
getActiveTSRecordProxiesin classOpRule
-
initializeCompute
public boolean initializeCompute()prep for compute- Overrides:
initializeComputein classOpRule
-
getLargestLimitValue
public double getLargestLimitValue() -
getLimitValue
-
evaluateRule
compares the intial value to rule constraints and returns the adjusted value- Overrides:
evaluateRulein classOpRule
-
clone
Description copied from class:RssTSLocationObjectclone method -
setIndependentVariable
-
getIndependentVariable
-
setFunctionRelease
-
getFunctionRelease
-
getSeasonalRecord
rule is a function of date or date/time -
setSeasonalRecord
-
setTimeInterpolationType
public void setTimeInterpolationType(int type) Type of interpolation of values in time -
getTimeInterpolationType
public int getTimeInterpolationType() -
getLimitType
public int getLimitType()returns the integer type of the limit: -1=Min, 1=Max -
setLimitType
public void setLimitType(int type) sets the limit type, must ether -1=Min or 1=Max, 0 Specified or 2 Demand -
getFieldObject
Called just before ascii serialization. Prepares the paired data values by setting there dss record path names- Specified by:
getFieldObjectin interfaceFieldAccessor- Overrides:
getFieldObjectin classOpRule- Parameters:
fld- The field to get.- Returns:
- The data object that is stored in the given field
-
setPeriod
public void setPeriod(int period) -
setStartingDay
public void setStartingDay(int startingDay) -
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
-