Package hec.rss.model
Class AdjustableFlow
java.lang.Object
java.util.Observable
hec.lang.NamedType
hec.rss.model.RssTSLocationObject
hec.rss.model.Function
hec.rss.model.ControlStructure
hec.rss.model.AdjustableFlow
- All Implemented Interfaces:
AsciiSerializable,FieldAccessor,TSLocation,PowerPlantContainer,AltInputReportInfc,RssModelVariableConstants,RssReturnStatusConstants,RssTSLocation,TailElevContainer,Serializable,Cloneable,Comparable,Observer,rma.lang.Modifiable
- Direct Known Subclasses:
PowerPlantFlow,PumpFlow,ReversiblePumpFlow
public class AdjustableFlow
extends ControlStructure
implements PowerPlantContainer, TailElevContainer, AltInputReportInfc
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intstatic final intstatic final intstatic final intstatic final intFields 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 computedoublecalcFlow(RunTimeStep rts) clone()clone methodintcomputeForecastStep(RunTimeStep runtime) intcomputeForecastStep(RunTimeStep runtime, double[] xt, double[] et, int tcnt) intcomputeHindcastStep(RunTimeStep runtime) compute one release for hind castdoubleCompute the flow at time step, rts.doublecomputeSubStepFlow(RunTimeStep rts, double xt, double et) voidPerforms a deep copy of the input parameter af into this object.protected AdjustableParameterfindAdjParam(String param) getActiveTSProxies(Vector vec, int iotype) returns a vector of required input, or generated output TSRecordProxies used in the current alternative default implementation function, assume all records are activedoublegetCapacity(double elev) get maximum release capacity for gated outletdoublegets the current maximum release from this outlet this should only be called during a computedoublegetCurrentCapacity(RunTimeStep rts, double[] xt, double[] et, int tcnt) doublegetCurrentCapacity(RunTimeStep rts, double elev0, double elev) getFieldObject(Field fld) This method allows access to java.lang.reflect.Field objects within the implementing class.doublegetFlowForGateHeight(double elev, double gateHeight) Given reservoir elevation and gate height, determine discharge flowintdoublegetGateHeightForElevFlow(double elev, double flow) Given reservoir elevation and desired discharge flow, determine gate heightdouble[]intintvoidgetHindcastDataList(Vector hvec) adds the hindcast record for total release from this objectdoublegetHindcastValue(RunTimeStep runtime) doubledoubledoublegetMaxCapacityForElevation(double elev) Deprecated.doublereturns the gate opening from the previous time step.getPump()doublegetStateRate(RunTimeStep rts) This method was introduced for the rs4engine.booleancheck if initial capacity values have been changedbooleanbooleanreturns boolean indicating whether this element has a power plantbooleanhasPump()booleanbooleanreturns boolean indicating whether this element has a tailwater elevationintInitialzes adjustable parameter values over forecast time window Copies the last hindcast value to the entire forecast window.booleaninitialize prior to a computebooleanisNodeComputed(int iorder, RssNode node, Integer idir) returns true if node is computed by the function, the function computes the flow at all nodes so it is always truevoidoutputReport(AlternativeInputReport report, org.jdom.Element elem) Alternative Input Report Interface for data.voidvoidvoidbooleansetFieldObject(Field fld, Object fobj) This allows access to fields withing the implementing object to set there data.voidsetGateCount(int n) voidsetGateSettings(double[] settings) voidsetGateSettingsParamId(int id) voidsetHasPowerPlant(boolean b) activates/deactivates power plantvoidsetHasPump(boolean b) voidsetHasReversiblePump(boolean b) voidsetHasTailElev(boolean b) activates/deactivates tailwater elevationbooleansetHindcastCondition(int cond) voidsetInitialRelease(double r) voidsetMultipleGateSettings(boolean b) voidCalled just before ascii serialization.voidupdateSystemState(RunTimeStep timestep, int numRteSteps) Update supporting time series called from rs4enginevoidRegenerates the list of all TSProxies required for this location.Methods inherited from class hec.rss.model.ControlStructure
copyInto, getEstimatedFlow, getEstimatedROD, getEstimatedROI, getIntakeGeometry, getRelease, periodAverageFlow, periodAverageFlow, setIntakeGeometryMethods inherited from class hec.rss.model.Function
cleanupFromDeSerialization, copyInto, getComputedTSRecordProxies, getComputedTSRecordProxies, getDisplayName, getElement, getFlowVolume, getFlowVolume, getForecastEquation, getFullName, getHindcastEquation, getKeyStringForObject, getObjectForKeyString, getOutputBPart, getSystem, getUnitSystem, initForecastLoop, initForPostProcessing, initHindcastLoop, initTSVals, printErrorMessage, printErrorMessage, readData, resetParent, restoreFunctionState, restoreHotstartState, saveFunctionState, saveHotstartState, 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, isValid, readResolve, removeModifiableListener, rename, set, setDescription, setIgnoreModifiedEvents, setIndex, setModified, setName, setValid, toString, 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
-
Field Details
-
KNOWN_RELEASE_CONST
public static final int KNOWN_RELEASE_CONST- See Also:
-
KNOWN_RELEASE_TS
public static final int KNOWN_RELEASE_TS- See Also:
-
KNOWN_RELEASE_STOR
public static final int KNOWN_RELEASE_STOR- See Also:
-
FIRST_HINDCAST_COND
public static final int FIRST_HINDCAST_COND- See Also:
-
LAST_HINDCAST_COND
public static final int LAST_HINDCAST_COND- See Also:
-
-
Constructor Details
-
AdjustableFlow
public AdjustableFlow() -
AdjustableFlow
-
-
Method Details
-
createDefaultAdjustableParameter
-
getStateRate
This method was introduced for the rs4engine.- Parameters:
rts-- Returns:
- Jacobian coefficient
-
computeStepFlow
Compute the flow at time step, rts. Computes end of period instantaneous flow or period average flow depending on the compute calculation option. Assumes that both rts.step and rts.step-1 are valid time series array indexes. This method was introduced for the rs4engine.- Parameters:
rts-- Returns:
- end of period instantaneous flow or period average flow depending on the compute calculation option
-
getMaxCapacity
public double getMaxCapacity() -
calcFlow
-
initForecastOperations
Initialzes adjustable parameter values over forecast time window Copies the last hindcast value to the entire forecast window.- Overrides:
initForecastOperationsin classControlStructure
-
applyHindcastData
applies specific hindcast data for compute- Overrides:
applyHindcastDatain classFunction
-
getHindcastDataList
adds the hindcast record for total release from this object- Overrides:
getHindcastDataListin classFunction
-
getPowerPlant
-
getPump
-
getTailwaterElevation
- Specified by:
getTailwaterElevationin interfaceTailElevContainer
-
setElement
- Overrides:
setElementin classFunction
-
isNodeComputed
returns true if node is computed by the function, the function computes the flow at all nodes so it is always true- Overrides:
isNodeComputedin classFunction- Parameters:
iorder- index of node in element vectornode- node objectidir- integer indicating whether node is inflow or outflow- Returns:
- true if computed, else false
-
getCapacityValuesBySetting
-
setupForSerialization
public void setupForSerialization()Called just before ascii serialization. Prepares the paired data values by setting there dss record path names- Overrides:
setupForSerializationin classFunction
-
setCapacityValuesBySetting
-
hasMultipleGateSettings
public boolean hasMultipleGateSettings() -
setMultipleGateSettings
public void setMultipleGateSettings(boolean b) -
getGateSettings
public double[] getGateSettings() -
setGateSettings
public void setGateSettings(double[] settings) -
getGateSettingsParamId
public int getGateSettingsParamId() -
setGateSettingsParamId
public void setGateSettingsParamId(int id) -
getGateCount
public int getGateCount() -
setGateCount
public void setGateCount(int n) -
setHasTailElev
public void setHasTailElev(boolean b) Description copied from interface:TailElevContaineractivates/deactivates tailwater elevation- Specified by:
setHasTailElevin interfaceTailElevContainer
-
hasTailElev
public boolean hasTailElev()Description copied from interface:TailElevContainerreturns boolean indicating whether this element has a tailwater elevation- Specified by:
hasTailElevin interfaceTailElevContainer
-
setHasPowerPlant
public void setHasPowerPlant(boolean b) Description copied from interface:PowerPlantContaineractivates/deactivates power plant- Specified by:
setHasPowerPlantin interfacePowerPlantContainer
-
hasPowerPlant
public boolean hasPowerPlant()Description copied from interface:PowerPlantContainerreturns boolean indicating whether this element has a power plant- Specified by:
hasPowerPlantin interfacePowerPlantContainer
-
hasPump
public boolean hasPump() -
setHasPump
public void setHasPump(boolean b) -
hasReversiblePump
public boolean hasReversiblePump() -
setHasReversiblePump
public void setHasReversiblePump(boolean b) -
getGateHeightForElevFlow
public double getGateHeightForElevFlow(double elev, double flow) Given reservoir elevation and desired discharge flow, determine gate height -
getPrevGateHeight
returns the gate opening from the previous time step. the gate opening my be interms of length or percent depending of the outlet configuration. if the outlet does not explicity define gate openings, then percentage of capacity is used.- Parameters:
rts- the current RunTimeStep (gate opening is returned for the time step previous to this rts)- Returns:
- opening as percent or length corresponding to outlet configuration
-
getFlowForGateHeight
public double getFlowForGateHeight(double elev, double gateHeight) Given reservoir elevation and gate height, determine discharge flow -
getMaxCapacityForElevation
Deprecated.get maximum release capacity for gated outlet -
copyInto
Performs a deep copy of the input parameter af into this object.- Parameters:
af-
-
clone
clone method- Overrides:
clonein classControlStructure
-
getInitialRelease
public double getInitialRelease() -
setInitialRelease
public void setInitialRelease(double r) -
getHindcastCondition
public int getHindcastCondition() -
setHindcastCondition
public boolean setHindcastCondition(int cond) -
getAdjustableParameter
- Overrides:
getAdjustableParameterin classControlStructure
-
findAdjParam
- Overrides:
findAdjParamin classFunction
-
hasDefaultParameters
public boolean hasDefaultParameters()check if initial capacity values have been changed- Overrides:
hasDefaultParametersin classFunction
-
getCapacityValues
-
setCapacityValues
-
initialize
public boolean initialize()initialize prior to a compute- Overrides:
initializein classFunction
-
getCurrentCapacity
gets the current maximum release from this outlet this should only be called during a compute -
getCurrentCapacity
-
getCurrentCapacity
-
getCapacity
public double getCapacity(double elev) get maximum release capacity for gated outlet- Parameters:
elev- Elevation at which capacity is computed
-
getHindcastValue
-
computeHindcastStep
compute one release for hind cast- Overrides:
computeHindcastStepin classFunction
-
computeForecastStep
- Overrides:
computeForecastStepin classFunction
-
computeForecastStep
- Overrides:
computeForecastStepin classFunction
-
computeSubStepFlow
- Overrides:
computeSubStepFlowin classFunction
-
getActiveTSProxies
returns a vector of required input, or generated output TSRecordProxies used in the current alternative default implementation function, assume all records are active- Overrides:
getActiveTSProxiesin classFunction
-
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 classFunction
-
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 classControlStructure- 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 classControlStructure- 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
-
updateSystemState
Update supporting time series called from rs4engine- Parameters:
timestep-numRteSteps-
-