Package hec.rss.model
Class DownstreamOp
java.lang.Object
hec.rss.model.DownstreamOp
- All Implemented Interfaces:
AsciiSerializable,FieldAccessor,RssModelVariableConstants,RssReturnStatusConstants,Serializable
public class DownstreamOp
extends Object
implements AsciiSerializable, RssReturnStatusConstants, RssModelVariableConstants
Manages Downstream Controls Rules applied at an RssNode
- See Also:
-
Field Summary
Fields 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 TypeMethodDescriptionvoidaddActiveRule(DownstreamCntrlOpRule dcrule) Adds an active rule for the current decision step.addRule(DownstreamCntrlOpRule drule) Add a ruleintclearForCompute(RssSystem sys, int nodeIndex) set system and node references and clear data prior to compute initializationcomputeFlowLimit(DownstreamCntrlOpRule dcrule, RunTimeStep rts) intcomputePulseResponse(ReservoirElement res, int outletId, RunTimeStep rts) Prepares the pulse routing data from the given reservoir outlet.voiddispose()clears data from the downstreamOp when it is to be deleted.intevaluateBaseFlow(RunTimeStep rts, int itrial, int evalType) voidevaluateLimits(RunTimeStep rts, int iteration) evaluate rule limits for given time stepintevaluateOperationStep(RunTimeStep rts, int itrial) This method is where the downstreamOp develops the flow space and allocates space to each reservoir rule.intevaluateOperationStep(RunTimeStep rts, int itrial, int evalType) getDownstreamOpRule(int index) Get a rule by indexgetDownstreamOpRule(String name) Get a rule by namegetFieldObject(Field fld) Get the list of rulesintgetResPulseTable(int resId) return the pulseTable for the given reservoir indexadds all rules to the given vector, initializing vec if necessaryintinitForPostProcessing(RssSystem sys, int nodeIndex, RunTimeWindow rtw) Prepares this run for post processing in the ResSim Simulation Module.intinitForPulse(RssSystem sys, RssNode node) prepare the downstream op for compute of pulse routingintinitialize(RssSystem sys, int nodeIndex, RunTimeWindow rtw) prepare the downstream op for system computeintCalled at the begining of each decision step evaluation, this method clears the list of active rules for each reservoir operating for this downstream location.booleanreturns true if there are no DownstreamOpRules in the ruleTableremoveRule(int index) remove a rule by indexvoidbooleansetFieldObject(Field fld, Object fobj) This allows access to fields withing the implementing object to set there data.void
-
Constructor Details
-
DownstreamOp
public DownstreamOp()Default Constructor -
DownstreamOp
public DownstreamOp(int nodeIndex)
-
-
Method Details
-
getResPulseTable
return the pulseTable for the given reservoir index- Parameters:
resId-- Returns:
-
evaluateLimits
evaluate rule limits for given time step- Parameters:
rts-
-
getMaxRoutingSteps
-
computeFlowLimit
-
addActiveRule
Adds an active rule for the current decision step. Note that since for each reservoir rules are evaluated in priority order, they are added here in priority order.- Parameters:
dcrule-
-
evaluateBaseFlow
-
evaluateOperationStep
This method is where the downstreamOp develops the flow space and allocates space to each reservoir rule. The downstreamOp also determines which reservoir rule is the controlling rule if there are more than one active for the current zone. InitOperationStep and addActiveRule methods must have been called previous to this method for the current time step- Parameters:
rts-- Returns:
-
evaluateOperationStep
-
initOperationStep
Called at the begining of each decision step evaluation, this method clears the list of active rules for each reservoir operating for this downstream location.- Parameters:
rts-- Returns:
-
setSystem
-
initForPulse
prepare the downstream op for compute of pulse routing- Returns:
- RTN_NOPROBLEM if initialization is sucessful
-
clearForCompute
set system and node references and clear data prior to compute initialization- Parameters:
sys-nodeIndex-- Returns:
-
initialize
prepare the downstream op for system compute- Returns:
- RTN_NOPROBLEM if initialization is sucessful
-
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
-
computePulseResponse
Prepares the pulse routing data from the given reservoir outlet. Requires that the appropriate pulse routing has just been completed for the outlet and pulse results are in memory. Called from RssRun- Parameters:
res- ReservoirElement releasing the pulseoutletId- Id of the reservoir child element that is the current outlet- Returns:
- RTN_NOPROBLEM compute is successful
-
removeRuleRef
-
isRuleTableEmpty
public boolean isRuleTableEmpty()returns true if there are no DownstreamOpRules in the ruleTable- Returns:
- true if rule table is empty
-
addRule
Add a rule -
dispose
public void dispose()clears data from the downstreamOp when it is to be deleted. -
removeRule
remove a rule by index -
getDownstreamOpRule
Get a rule by name -
getDownstreamOpRule
Get a rule by index -
getRules
adds all rules to the given vector, initializing vec if necessary- Parameters:
vec-- Returns:
- vec
-
getFieldObject
Get the list of rules- Specified by:
getFieldObjectin interfaceFieldAccessor- 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- 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
-