Package hec.rss.model
Class ScriptOpRule
java.lang.Object
java.util.Observable
hec.lang.NamedType
hec.rss.model.RssTSLocationObject
hec.rss.model.OpRule
hec.rss.model.ScriptOpRule
- All Implemented Interfaces:
AsciiSerializable,FieldAccessor,TSLocation,AltInputReportInfc,RssModelVariableConstants,RssReturnStatusConstants,RssTSLocation,Serializable,Cloneable,Comparable,Observer,rma.lang.Modifiable
Title: General CWMS Framework
Description:
Copyright: Copyright (c) 2002
Company: RMA Inc.
- See Also:
-
Field Summary
Fields 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
ConstructorsConstructorDescriptionScriptOpRule(OpController controller, String name) ScriptOpRule(String name) -
Method Summary
Modifier and TypeMethodDescriptionvoidevaluateLimits(RunTimeStep rts, int iteration) calculates the limiting value for this rule for the given time step.evaluateRule(RunTimeStep rts, double initialValue, int iteration, boolean evalDownstream) compares the intial value to rule constraints and returns the adjusted valueintvoidgetElementDependencies(List elemList) Returns the elements that are related to input time series required for calculation of this state variable.booleangetFieldObject(Field fld) This method allows access to java.lang.reflect.Field objects within the implementing class.static Stringstatic intgetOpValue(RunTimeStep rts) returns the operation value based on the previously computed rule limit.intget the limit type of this rule should be implemented by all subclasses of OpRulelonglongbooleanprep for computeintclear out the Local TimeSeries variables.booleanlocalTimeSeriesExists(String varName) check to see if the Local TimeSeries put with the name varName existslocalTimeSeriesGet(String varName) return aTSRecordcorresponding tovarName.get aListof the Local TimeSeries.get aListof the Local TimeSeries names.localTimeSeriesNew(String varName) create aTSRecordfor the corresponding tovarName, with the initial values set to undefined.localTimeSeriesNew(String varName, double initialValue) create aTSRecordcorresponding tovarName, with the initial values set to initialValue If thevarNameisnullthen null is returned The TimeSeries will have a size of the entire Run Time WindowlocalTimeSeriesNew(String varName, TimeSeriesContainer tsc) create aTSRecordcorresponding tovarName, with the TSRecord data set to the TimeSeriesContainer.intget the number of Local TimeSeries currently being storedprotected voidvoidoutputReport(AlternativeInputReport report, org.jdom.Element elem) Alternative Input Report Interface for data.voidsetEvalRule(boolean evalRule) booleansetFieldObject(Field fld, Object fobj) This allows access to fields withing the implementing object to set there data.voidsetJavaClassPath(String path) voidsetScriptText(String scriptText) voidsetUseJavaClass(boolean set) booleanvoidbooleancheck to see if the user variable put with the name varName existsget the user variable associated with the name varName, that was previous added withvarPut()voidsave the user variable usrVar with the associated name varNameremove the user variable that was stored with the name varName.intclear out the user variables.varsList()get aListof the user variables.get aListof the user variable names.intvarsSize()return the number of user variables currently being storedMethods inherited from class hec.rss.model.OpRule
applyHindcastData, checkRisingFallingCondition, clone, computeStepLimit, evaluateRule, evaluateRule, evaulatePerformance, getActiveTSRecordProxies, getAveragingPeriod, getController, getDayOfWeekFactor, getDemandScale, getEnableRiseFallCondition, getGmtOffset, getKeyStringForObject, getLargestDayOfWeekFactor, getLargestTimeOfDayFactor, getMultiplier, getNetwork, getObjectForKeyString, getOperationsElement, getParameterType, getPowerOpValue, getPriority, getReferencedStateVariables, getRequiredTSRecordProxies, getReservoirElement, getRiseFallCondition, getRiseFallTolerance, getRssSystem, getSystem, getTargetTSRecordProxy, getTimeOfDayFactor, getTimeOfDayMultiplier, getTSProxyName, getUnitSystem, initForPostProcessing, initOperationStep, isActive, isDnstrmRule, isLocalRule, isPerAvgRule, resetChildOwnership, restoreFunctionState, restoreHotstartState, riseFallConditionIsValid, saveFunctionState, saveHotstartState, setAveragingPeriod, setController, setDemandScale, setEnableRiseFallCondition, setMultiplier, setParameterType, setPeriodAverageLimit, setPriority, setRiseFallCondition, setRiseFallTolerance, setSystem, setTimeOfDayMultiplier, setUseDayOfWeekMultiplier, setUseDemandScale, setUsePeriodAverageLimit, setUseTimeOfDayMultiplier, toString, updateByDemandScale, updateTSProxyList, 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
-
Constructor Details
-
ScriptOpRule
public ScriptOpRule() -
ScriptOpRule
-
ScriptOpRule
-
-
Method Details
-
evaluateLimits
calculates the limiting value for this rule for the given time step. as of 12/04- Overrides:
evaluateLimitsin classOpRule- Parameters:
rts-iteration-
-
setEvalRule
public void setEvalRule(boolean evalRule) -
getEvalRule
public boolean getEvalRule() -
getComputeIteration
public int getComputeIteration() -
getOpValue
returns the operation value based on the previously computed rule limit. As of 12/04- Overrides:
getOpValuein classOpRule- Parameters:
rts-- Returns:
-
setUseJavaClass
public void setUseJavaClass(boolean set) -
setJavaClassPath
-
useJavaClass
public boolean useJavaClass() -
getJavaClassPath
-
setScriptText
-
getScriptText
-
getFuncDefinition
-
getRuleLimitType
public int getRuleLimitType()get the limit type of this rule should be implemented by all subclasses of OpRule- Overrides:
getRuleLimitTypein classOpRule
-
initializeCompute
public boolean initializeCompute()Description copied from class:OpRuleprep for compute- Overrides:
initializeComputein classOpRule
-
getMaxScriptLength
public static int getMaxScriptLength() -
evaluateRule
public OpValue evaluateRule(RunTimeStep rts, double initialValue, int iteration, boolean evalDownstream) Description copied from class:OpRulecompares the intial value to rule constraints and returns the adjusted value- Overrides:
evaluateRulein classOpRule
-
localTimeSeriesNew
create aTSRecordfor the corresponding tovarName, with the initial values set to undefined. If thevarNameisnullthennullis returned The TimeSeries will have a size of the entire Run Time Window- Parameters:
varName- the name of the Local TimeSeries. Non-null- Returns:
- the LocalTimeSeries.
-
localTimeSeriesNew
create aTSRecordcorresponding tovarName, with the initial values set to initialValue If thevarNameisnullthen null is returned The TimeSeries will have a size of the entire Run Time Window- Parameters:
varName- the name of the Local TimeSeries. Non-NullinitialValue- the initial value to set the Local TimeSeries to
-
localTimeSeriesNew
create aTSRecordcorresponding tovarName, with the TSRecord data set to the TimeSeriesContainer. If thevarNameor theTimeSeriesContainerisnullthen null is returned The TimeSeries returned is the size of the TimeSeriesContainer passed in. No attempt to align the returned TimeSeries with the RunTimeWindow is performed.- Parameters:
varName- the name of the Local TimeSeries. Non-Nulltsc- the TimeSeriesContainer to populate the TSRecord with
-
localTimeSeriesSize
public int localTimeSeriesSize()get the number of Local TimeSeries currently being stored- Returns:
- the number of Local TimeSeries
-
localTimeSeriesClear
public int localTimeSeriesClear()clear out the Local TimeSeries variables.- Returns:
- the number of Local TimeSeries variables cleared
-
localTimeSeriesListKeys
get aListof the Local TimeSeries names.- Returns:
- a
Listof the Local TimeSeries names
-
localTimeSeriesList
get aListof the Local TimeSeries. The List is not backed by the internal storage of the Local TimeSeries- Returns:
- a
Listof the Local TimeSeries
-
localTimeSeriesGet
return aTSRecordcorresponding tovarName. If a TSRecord- Parameters:
varName- the name of the Local TimeSeries. Non-Null
-
localTimeSeriesExists
check to see if the Local TimeSeries put with the name varName exists- Parameters:
varName- the name of the Local TimeSeries- Returns:
- true if the Local TimeSeries exists
-
varExists
check to see if the user variable put with the name varName exists- Parameters:
varName- the name of the user variable- Returns:
- true if the variable exists
-
varPut
save the user variable usrVar with the associated name varName- Parameters:
varName-usrVar-
-
varGet
get the user variable associated with the name varName, that was previous added withvarPut()- Parameters:
varName- the name of the user variable- Returns:
- the user variable or null if the user variable doesn't exist
-
varsClear
public int varsClear()clear out the user variables.- Returns:
- the number of variables cleared
-
varsSize
public int varsSize()return the number of user variables currently being stored- Returns:
- the number of user variables
-
varsList
get aListof the user variables. The List is not backed by the internal storage of the user variables.- Returns:
- a
Listof the user variables
-
varsListKeys
get aListof the user variable names.- Returns:
- a
Listof the user variable names
-
varRemove
remove the user variable that was stored with the name varName.- Parameters:
varName- the name of the user variable- Returns:
- the user variable or null
-
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 classOpRule- 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 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
-
getTotalComputeInitMs
public long getTotalComputeInitMs() -
getTotalComputeMs
public long getTotalComputeMs() -
nameChanged
protected void nameChanged() -
useTextFileReferences
public void useTextFileReferences() -
getElementDependencies
Returns the elements that are related to input time series required for calculation of this state variable. This method is used to determine element dependencies for compute ordering. Both input and output time series are considered.- Overrides:
getElementDependenciesin classOpRule- Parameters:
elemList- List to which required Element objects will be added.
-