Package hec.rss.model
Class MuskingumCungeRouting
java.lang.Object
java.util.Observable
hec.lang.NamedType
hec.rss.model.RssTSLocationObject
hec.rss.model.Function
hec.rss.model.Routing
hec.rss.model.MuskingumCungeRouting
- All Implemented Interfaces:
AsciiSerializable,FieldAccessor,TSLocation,AltInputReportInfc,RssModelVariableConstants,RssReturnStatusConstants,RssTSLocation,Serializable,Cloneable,Comparable,Observer,rma.lang.Modifiable
MuskingumCungeRouting computes routed flows using the Muskingum-Cunge
routing method. The routing can be computed for several different channel
types: circle, trapezoid, or an eight-point cross-section.
- See Also:
-
Field Summary
Fields inherited from class hec.rss.model.Routing
_shouldCheckHotstart, FLOWFields 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
ConstructorsConstructorDescriptionMuskingumCungeRouting(Element elem) MuskingumCungeRouting(Element elem, ChannelType type) -
Method Summary
Modifier and TypeMethodDescriptionprotected voidcomputeFlowStats(double qref) Compute average flow and some other flow statsintcomputeForecast(RunTimeWindow rtw, int computeFlag) intcompute one routing step during forecastintCompute routing for the full hydrograph.intcomputeRouting(RunTimeStep rts, double[] inputTS, double[] outputTS, Object[] routingDataTS, double[] routed) Compute routing over the given time window using the provided input, output, and routing data object time series arraysdoublecomputeRoutingStep(int interval, double q0, double q1) Compute routing for one time step.doublecomputeRoutingStepStandalone(int rtsMinutes, double q0, double q1, double reachOutflow, double[] initSubOutflow, double[] finSubOutflow) Method to compute a time step of routing through a reach for an offline WQ simulation Default implementation - returns array of constant flows Actual routing methods implemented in individual subclassesvoidcopyDataFromMuskingumCunge8ptRouting(MuskingumCunge8ptRouting oldRoutingFunction) Copy relavent data from MuskingumCunge8ptRouting function into current MuskingumCungetRouting function.voidcopyDataFromMuskingumCungePrismRouting(MuskingumCungePrismRouting oldRoutingFunction) Copy relavent data from MuskingumCungePrismRouting function into current MuskingumCungetRouting function.Gets channel for this routing.Gets channel type for this routing.getFieldObject(Field fld) This method allows access to java.lang.reflect.Field objects within the implementing class.doublevoidgetMaximumExpectedFlow(hec.data.ParamDouble pd) doublevoidgetMinimumExpectedFlow(hec.data.ParamDouble pd) intbooleaninitialize prior to a computebooleanInitialize routing object for standalone compute in offline WQ simulation Default method - implemented in individual subclassesbooleanisValid()Checks if parameter values are valid for this routing method.voidoutputReport(AlternativeInputReport report, org.jdom.Element elem) Alternative Input Report Interface for data.voidrestoreFunctionState(int stateid) restore the state of the element and its function matching the given identifier - restores subreach flowsvoidsaveFunctionState(int stateid) save the current state of the element and its function with the given identifier - saves subreach flowsvoidsaveHotstartState(ElementHotstartState elementHotstartState, int stateId) voidsetChannelType(ChannelType type) Sets channel type and creates a Channel.booleansetFieldObject(Field fld, Object fobj) This allows access to fields withing the implementing object to set there data.voidsetMaximumExpectedFlow(double flow) voidsetMaximumExpectedFlow(hec.data.ParamDouble pd) voidsetMinimumExpectedFlow(double flow) voidsetMinimumExpectedFlow(hec.data.ParamDouble pd) voidsetNumberOfTimestepSubintervals(int numintv) voidCalled just before ascii serialization.Methods inherited from class hec.rss.model.Routing
checkForecastCalc, checkForecastCalc, checkForecastStepCalc, computeHindcast, estimateCoefRouting, getDefaultCoefArray, getNumberSubreaches, getSubreachFlowArray, newRouteData, toStringMethods inherited from class hec.rss.model.Function
applyHindcastData, cleanupFromDeSerialization, clone, computeForecastStep, computeHindcastStep, computeSubStepFlow, copyInto, findAdjParam, getActiveTSProxies, getAdjustableParameter, getComputedTSRecordProxies, getComputedTSRecordProxies, getDisplayName, getElement, getFlowVolume, getFlowVolume, getForecastEquation, getFullName, getHindcastDataList, getHindcastEquation, getKeyStringForObject, getObjectForKeyString, getOutputBPart, getSystem, getUnitSystem, hasDefaultParameters, initForecastLoop, initForPostProcessing, initHindcastLoop, initTSVals, isNodeComputed, printErrorMessage, printErrorMessage, readData, resetParent, restoreHotstartState, saveHotstartState, setElement, updateTSProxyList, updateWQTSProxyList, writeDataMethods inherited from class hec.rss.model.RssTSLocationObject
addTSRecord, addTSRecordProxy, addTSRecordProxy, addTSRecordProxy, clearTSProxyList, copyInto, getActiveTSRecordProxies, 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, getIgnoreModifiedEvents, getIndex, getName, isModified, 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, setChangedMethods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface hec.rss.model.RssTSLocation
getTSRecordProxyMethods inherited from interface hec.model.TSLocation
getTSDataSet
-
Constructor Details
-
MuskingumCungeRouting
public MuskingumCungeRouting() -
MuskingumCungeRouting
-
MuskingumCungeRouting
-
-
Method Details
-
getChannelType
Gets channel type for this routing.- Returns:
- channel type
-
getMaximumExpectedFlow
public double getMaximumExpectedFlow() -
getMinimumExpectedFlow
public double getMinimumExpectedFlow() -
setMaximumExpectedFlow
public void setMaximumExpectedFlow(double flow) -
setMinimumExpectedFlow
public void setMinimumExpectedFlow(double flow) -
getMaximumExpectedFlow
public void getMaximumExpectedFlow(hec.data.ParamDouble pd) -
setMaximumExpectedFlow
public void setMaximumExpectedFlow(hec.data.ParamDouble pd) -
getMinimumExpectedFlow
public void getMinimumExpectedFlow(hec.data.ParamDouble pd) -
setMinimumExpectedFlow
public void setMinimumExpectedFlow(hec.data.ParamDouble pd) -
setNumberOfTimestepSubintervals
public void setNumberOfTimestepSubintervals(int numintv) -
getNumberOfTimestepSubintervals
public int getNumberOfTimestepSubintervals() -
setChannelType
Sets channel type and creates a Channel.- Parameters:
type- channel type.
-
getChannel
Gets channel for this routing.- Returns:
- channel object
-
computeRouting
Compute routing for the full hydrograph.- Overrides:
computeRoutingin classRouting- Parameters:
rts- run-time-step object- Returns:
-
computeRouting
public int computeRouting(RunTimeStep rts, double[] inputTS, double[] outputTS, Object[] routingDataTS, double[] routed) Compute routing over the given time window using the provided input, output, and routing data object time series arrays- Overrides:
computeRoutingin classRouting- Parameters:
rts- time step and number of stepsinputTS- upstream flow time seriesoutputTS- previously computed downstream flow time seriesroutingDataTS- additional time depended routing data if needed for the routing methodrouted- newly computed downstream flow (array size must be >= rts.nstep)- Returns:
- return flag, RssReturnStatusConstants.RTN_NOPROBLEM if routing computed successfully
-
computeForecastStep
compute one routing step during forecast- Overrides:
computeForecastStepin classFunction
-
computeForecast
- Overrides:
computeForecastin classRouting
-
computeRoutingStep
public double computeRoutingStep(int interval, double q0, double q1) Compute routing for one time step.- Parameters:
interval- timeStep in minutes.q0- inflow at beginning of period.q1- inflow at end of period.- Returns:
- outflow at end of period.
-
initialize
public boolean initialize()Description copied from class:Routinginitialize prior to a compute- Overrides:
initializein classRouting
-
isValid
public boolean isValid()Checks if parameter values are valid for this routing method. -
computeFlowStats
protected void computeFlowStats(double qref) Compute average flow and some other flow stats- Parameters:
qref-
-
saveFunctionState
public void saveFunctionState(int stateid) save the current state of the element and its function with the given identifier - saves subreach flows- Overrides:
saveFunctionStatein classFunction- Parameters:
stateid- identifier for the state
-
restoreFunctionState
public void restoreFunctionState(int stateid) restore the state of the element and its function matching the given identifier - restores subreach flows- Overrides:
restoreFunctionStatein classFunction- Parameters:
stateid- identifier for the state
-
saveHotstartState
-
copyDataFromMuskingumCunge8ptRouting
Copy relavent data from MuskingumCunge8ptRouting function into current MuskingumCungetRouting function. MuskingumCunge8ptRouting will no longer be used.- Parameters:
oldRouting- Old MuskingumCunge8ptRouting function
-
copyDataFromMuskingumCungePrismRouting
Copy relavent data from MuskingumCungePrismRouting function into current MuskingumCungetRouting function. MuskingumCungePrismRouting will no longer be used.- Parameters:
oldRouting- Old MuskingumCungePrismRouting function
-
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 classRouting- 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 classRouting- 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
-
setupForSerialization
public void setupForSerialization()Called just before ascii serialization. Prepares the paired data values by setting there dss record path names Store the Celerity vs. q and Topwidth vs. q paired value curves for reference- Overrides:
setupForSerializationin classFunction
-
outputReport
Description copied from interface:AltInputReportInfcAlternative Input Report Interface for data.- Specified by:
outputReportin interfaceAltInputReportInfc- Overrides:
outputReportin classRouting
-
initializeStandalone
public boolean initializeStandalone()Description copied from class:RoutingInitialize routing object for standalone compute in offline WQ simulation Default method - implemented in individual subclasses- Overrides:
initializeStandalonein classRouting- Returns:
- true if initialization successful, false o.w.
-
computeRoutingStepStandalone
public double computeRoutingStepStandalone(int rtsMinutes, double q0, double q1, double reachOutflow, double[] initSubOutflow, double[] finSubOutflow) Description copied from class:RoutingMethod to compute a time step of routing through a reach for an offline WQ simulation Default implementation - returns array of constant flows Actual routing methods implemented in individual subclasses- Overrides:
computeRoutingStepStandalonein classRouting- Parameters:
q0- initial flow into upstream subreachq1- flow at end of time step into upstream subreachreachOutflow- flow at end of the reach - used for coef routinginitSubOutflow- array of subreach flows at start of time stepfinSubOutflow- array of subreach flows at end of time step- Returns:
- flow at the end of the reach at end of time step
-