Package hec.rss.model
Class PumpOpRule
java.lang.Object
java.util.Observable
hec.lang.NamedType
hec.rss.model.RssTSLocationObject
hec.rss.model.OpRule
hec.rss.model.PumpOpRule
- All Implemented Interfaces:
AsciiSerializable,FieldAccessor,TSLocation,DemandRuleInf,AltInputReportInfc,RssModelVariableConstants,RssReturnStatusConstants,RssTSLocation,Serializable,Cloneable,Comparable,Observer,rma.lang.Modifiable
Title: HecJava Development
Description:
Copyright: Copyright (c) 2003
Company:
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intstatic final intstatic final intalways do minimum pumping no matter whatstatic final intdo minimum pumping if any pumping is requiredstatic final intno minimum pumpingstatic final intonly pump if at least the minimum pumping value is neededstatic final intstatic 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, NONE, 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 TypeMethodDescriptionprotected intReturns the number of hours from the current time determined by the run time step until the end of the vaild pumping period.intperforms pumpback operation for the given timestep removing water from the source reservoir and adding it to the parent reservoir.protected intgetActiveTSRecordProxies(Vector vec, int iotype) add the time series record proxies associated current compute.doubleintvoidgetElementDependencies(List elemList) adds elements upon which the current rule depends to the given list.doubledoubledoublegetMaxPumpVol(RunTimeStep rts, int istep, int periodSteps) calculate the maximum pump volume for the given intervaldoubleintdoublegetMinPumpVol(RunTimeStep rts, int istep, int periodSteps) intprotected PumpgetPump()Returns the Pump that this rule operates for.intReturns the currently set pumping strategyintReturns the currently set pumping strategydoubleintget the limit type of this rule should be implemented by all subclasses of OpRulereturn the source reservoir, finding it from the system if necessary.intreturn the source reservoir idintprotected doubleCalculates the reservoir elevation that we want to meet for pumping operations for a current time step.intReturns the option used by this rule to acheive a certain reservoir elevation.Gets the water account.booleanInintailizes this OpRule for a compute.intinitOperationStep(RunTimeStep rts, int iteration) initialization call before each operation step, or before recomputing operations with different optionsintintbooleanvoidoutputReport(AlternativeInputReport report, org.jdom.Element elem) Alternative Input Report Interface for data.voidsetConstantTargetElevation(double value) voidsetDailyPumpingOption(int pumpingOption) voidsetLatitude(double lat) voidsetLongitude(double longitude) voidsetMinPumpHours(double min) voidsetMinPumpOption(int opt) voidsetPumpingBias(int bias) Sets the pumping bias for this rule to either be "BEGINNIG", "MIDDLE", or "END" of period.voidvoidsetPumpingStrategy(int strategy) Sets the pumping strategy for this rule to either use full capacity of the pump, or to use the entire pumping period.voidvoidsetSourceReservoirId(int id) set the source reservoir idvoidsetStorageZoneTargetElevation(OpSet opset, StorageZone sz) voidvoidsetTargetElevationOption(int option) Sets the target elevation fill option for this rule.voidSets the water account.voidsetWholeHourOption(boolean b) voidRegenerates the list of all TSProxies required for this location.Methods inherited from class hec.rss.model.OpRule
applyHindcastData, checkRisingFallingCondition, clone, computeStepLimit, evaluateLimits, evaluateRule, evaluateRule, evaluateRule, evaulatePerformance, getAveragingPeriod, getController, getDayOfWeekFactor, getDemandScale, getEnableRiseFallCondition, getFieldObject, getGmtOffset, getKeyStringForObject, getLargestDayOfWeekFactor, getLargestTimeOfDayFactor, getMultiplier, getNetwork, getObjectForKeyString, getOperationsElement, getOpValue, getParameterType, getPowerOpValue, getPriority, getReferencedStateVariables, getRequiredTSRecordProxies, getReservoirElement, getRiseFallCondition, getRiseFallTolerance, getRssSystem, getSystem, getTargetTSRecordProxy, getTimeOfDayFactor, getTimeOfDayMultiplier, getTSProxyName, getUnitSystem, initForPostProcessing, isActive, isDnstrmRule, isLocalRule, isPerAvgRule, resetChildOwnership, restoreFunctionState, restoreHotstartState, riseFallConditionIsValid, saveFunctionState, saveHotstartState, setAveragingPeriod, setController, setDemandScale, setEnableRiseFallCondition, setFieldObject, setMultiplier, setParameterType, setPeriodAverageLimit, setPriority, setRiseFallCondition, setRiseFallTolerance, setSystem, setTimeOfDayMultiplier, setUseDayOfWeekMultiplier, setUseDemandScale, setUsePeriodAverageLimit, setUseTimeOfDayMultiplier, toString, updateByDemandScale, 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
-
PUMPING_STRATEGY_FULL_CAPACITY
public static final int PUMPING_STRATEGY_FULL_CAPACITY- See Also:
-
PUMPING_STRATEGY_FULL_PERIOD
public static final int PUMPING_STRATEGY_FULL_PERIOD- See Also:
-
PUMPING_BIAS_BEGINNING_PERIOD
public static final int PUMPING_BIAS_BEGINNING_PERIOD- See Also:
-
PUMPING_BIAS_MIDDLE_PERIOD
public static final int PUMPING_BIAS_MIDDLE_PERIOD- See Also:
-
PUMPING_BIAS_END_PERIOD
public static final int PUMPING_BIAS_END_PERIOD- See Also:
-
TARGET_ELEVATION_CONSTANT
public static final int TARGET_ELEVATION_CONSTANT- See Also:
-
TARGET_ELEVATION_STORAGE_ZONE
public static final int TARGET_ELEVATION_STORAGE_ZONE- See Also:
-
TARGET_ELEVATION_SEASONALLY
public static final int TARGET_ELEVATION_SEASONALLY- See Also:
-
DAILY_PUMPING_OPTION_NIGHTTIME
public static final int DAILY_PUMPING_OPTION_NIGHTTIME- See Also:
-
DAILY_PUMPING_OPTION_HOUR_RANGE
public static final int DAILY_PUMPING_OPTION_HOUR_RANGE- See Also:
-
MINPUMPING_OPTION_NONE
public static final int MINPUMPING_OPTION_NONEno minimum pumping- See Also:
-
MINPUMPING_OPTION_ALWAYS
public static final int MINPUMPING_OPTION_ALWAYSalways do minimum pumping no matter what- See Also:
-
MINPUMPING_OPTION_IFPUMP
public static final int MINPUMPING_OPTION_IFPUMPdo minimum pumping if any pumping is required- See Also:
-
MINPUMPING_OPTION_THRESHOLD
public static final int MINPUMPING_OPTION_THRESHOLDonly pump if at least the minimum pumping value is needed- See Also:
-
-
Constructor Details
-
PumpOpRule
public PumpOpRule() -
PumpOpRule
-
-
Method Details
-
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
-
setMinPumpHours
public void setMinPumpHours(double min) -
getMinPumpHours
public double getMinPumpHours() -
setMinPumpOption
public void setMinPumpOption(int opt) -
getMinPumpOption
public int getMinPumpOption() -
isWholeHourOption
public boolean isWholeHourOption() -
setWholeHourOption
public void setWholeHourOption(boolean b) -
getActiveTSRecordProxies
add the time series record proxies associated current compute. subclassses that over-ride this method should also call this method- Overrides:
getActiveTSRecordProxiesin 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 sub-classes of OpRule may over-ride this method if they use TSRecordProxies but should also call this method- Overrides:
updateTSProxyListin classOpRule
-
getMaxPumpVol
calculate the maximum pump volume for the given interval- Parameters:
rts- current RunTimeStepistep- current step within the generation periodperiodSteps- number of steps in the generation period- Returns:
- max pumping volume in ac-ft or m^3
-
getMinPumpVol
-
getSourceReservoirId
public int getSourceReservoirId()return the source reservoir id- Returns:
-
setSourceReservoirId
public void setSourceReservoirId(int id) set the source reservoir id- Parameters:
id-
-
getSourceReservoir
return the source reservoir, finding it from the system if necessary. This method may return null if the source reservoir cannnot be found;- Returns:
-
initPumpbackStep
-
initPumpbackRecords
-
computePumpbackStep
performs pumpback operation for the given timestep removing water from the source reservoir and adding it to the parent reservoir. this method is called after the regular compute is complete for the time step- Parameters:
rts-- Returns:
-
getRuleLimitType
public int getRuleLimitType()get the limit type of this rule should be implemented by all subclasses of OpRule- Overrides:
getRuleLimitTypein classOpRule
-
getPumpingRangeModel
-
setPumpingHourRangeModel
-
getSuriseSunsetModel
-
setSunriseSunsetModel
-
getPumpingStrategy
public int getPumpingStrategy()Returns the currently set pumping strategy- Returns:
- the pumping strategy
-
setPumpingStrategy
public void setPumpingStrategy(int strategy) Sets the pumping strategy for this rule to either use full capacity of the pump, or to use the entire pumping period. Valid values are either PUMPING_STRATEGY_FULL_CAPACITY or PUMPING_STRATEG_FULL_PERIOD.- Parameters:
strategy-
-
getPumpingBias
public int getPumpingBias()Returns the currently set pumping strategy- Returns:
- the pumping strategy
-
setPumpingBias
public void setPumpingBias(int bias) Sets the pumping bias for this rule to either be "BEGINNIG", "MIDDLE", or "END" of period.- Parameters:
bias-
-
setTargetElevationOption
public void setTargetElevationOption(int option) Sets the target elevation fill option for this rule. The target fill elevation defines the objective for each nights pumping. The options are TARGET_ELEVATION_CONSTANT - A constant elevation value to maintain. TARGET_ELEVATION_SEASONALLY - A table of elevation values to use a certain times of the year. TARGET_ELEVATION_STORAGE_ZONE - Tries to keep the reservoir elevation within a certain storage zone.- Parameters:
option-
-
getTargetElevationOption
public int getTargetElevationOption()Returns the option used by this rule to acheive a certain reservoir elevation. The avaiable methods are Seasonally, a constant value, or a storage zone.- Returns:
-
setConstantTargetElevation
public void setConstantTargetElevation(double value) -
getConstantTargetElevation
public double getConstantTargetElevation() -
setSeasonalTargetElevation
-
getSeasonalTargetElevation
-
setStorageZoneTargetElevation
-
getStorageZoneId
public int getStorageZoneId() -
getOpSetId
public int getOpSetId() -
setDailyPumpingOption
public void setDailyPumpingOption(int pumpingOption) -
getDailyPumpingOption
public int getDailyPumpingOption() -
getLongitude
public double getLongitude() -
setLongitude
public void setLongitude(double longitude) -
getLatitude
public double getLatitude() -
setLatitude
public void setLatitude(double lat) -
getPumpRuleFlow
-
getTargetElevation
Calculates the reservoir elevation that we want to meet for pumping operations for a current time step. Returns RMAConst.UNDEF_DOUBLE is for some reason there is an error in the calculation.- Parameters:
rts- marks the timestep at which to compute the elevation- Returns:
- elevation.
-
computeHoursLeftInPumpingPeriod
Returns the number of hours from the current time determined by the run time step until the end of the vaild pumping period.- Parameters:
rts-- Returns:
-
computePumpingWindowHours
-
initializeCompute
public boolean initializeCompute()Inintailizes this OpRule for a compute. All arrays and variable that are needed for a compute are allocation and set to some default state.- Overrides:
initializeComputein classOpRule- Returns:
- true if the initialization was successful otherwise false.
-
initOperationStep
initialization call before each operation step, or before recomputing operations with different options- Overrides:
initOperationStepin classOpRule
-
getPump
Returns the Pump that this rule operates for.- Returns:
-
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
-