DHI.Mike1D.ControlModule Namespace

The control module is a generic module capable of controlling various quantities as e.g. gate levels in gate structures. The control is implemented by a state machine, where conditions and actions utilize generic expressions from DHI.Math.Expression.

Classes

Action Base implementation of an IAction, containing the Id and strategyId for the action.
ActionActivate Simple class that calls a setter with no arguments when implemented
ActionChange Action that will change the value of controlled item with the value of ValueExpression.
ActionNoOperation Action that does nothing.

See also ActionUnchanged for the difference between this and the ActionUnchanged.

ActionPID Action to set a value (via Action.ValueSetter) based on an input expression. Optinally, the value can be multiplied by the value of OutExpressionFactor, before the value is passed on to the value setter.
ActionSet Action that will set the value of the ValueExpression to the controlled item.
ActionSetBase Base class for actions using the ActionControlSet method for implementing an action.

It contains methods for getting values of the controlled item and updating the controlled item.

ActionTargetDescription Description of the target of an action
ActionUnchanged Action that, when activated, will read the current control value (CurrentControlValueGetter) and set that to the controlled item as the new target value.

In case the control has another target value and is has not yet reached the target (because of a velocity limitation or similar) but is moving towards that target, this action will stop that process, by resetting the target value to the current value.

Compared to the ActionNoOperation, the ActionNoOperation will not do anything, hence if the control is approaching a target value, it will continue do so. If the control is not in the move, there will be no difference between ActionNoOperation and this ActionUnchanged.

ActionWith2Setters Control action with two setters. The second setter, ValueSetter2, is secondary in the sense that ValueSetter can depend on the values that are set by ValueSetter2. In other words ValueSetter2 is called first. The thinking is that ValueSetter is still the main control function.
ControlData Control Data object, specifying a number of controls in the form of state machines and states with actions.
ControlExpressionUnits Helper class to extract all time series and sensors, and their units, from an expression.
ControlExpressionUnitsCSensorInfo Helper class, storing info related to a sensor
ControlExpressionUnitsCTSInfo Helper class, storing info related to time series
ControlExtensions Extension methods for classes in the ControlModule namespace
ControlStateMachine State machine used for applying different actions to the setup.

The Control State Machine implements a finite-state machine (FSM). It can only be in one of the States defined, being the CurrentState. Each State has its own transition table, TransitionTable, defining conditions for changing to a new state, and an Action is associated to every state.

Actions can be reused by several states, but actions cannot (should not) be reused between by several ControlStateMachine's.

ControlUserFunctionFactory Factory for creating user functions specific for the MIKE 1D engine.

When a ControlData object is not provided, the object can be used for validation purposes. Validation without a ControlData object will not validate if time series and tables has been properly defined.

ExpressionFactory Helper class for creating expression trees.
ExpressionNodeConstant Constant double expression node
ExpressionNodeConstantBool Constant bool expression node
ExpressionNodeFunctionAbs An expression node that computes the absolute value of a double expression node
ExpressionNodeFunctionAdd An expression node that adds two double expression nodes
ExpressionNodeFunctionAnd An expression node that computes the AND of two bool expression nodes
ExpressionNodeFunctionDiv An expression node that divides two double expression nodes
ExpressionNodeFunctionEquals An expression node that finds out if two double expression nodes are equal
ExpressionNodeFunctionGreaterThan An expression node that finds out if one double expression node is greater than another
ExpressionNodeFunctionGreaterThanOrEquals An expression node that finds out if one double expression node is greater than or equal to another
ExpressionNodeFunctionLessThan An expression node that finds out if one double expression node is less than another
ExpressionNodeFunctionLessThanOrEquals An expression node that finds out if one double expression node is less than or equal to another
ExpressionNodeFunctionMax An expression node that finds the maximum of two double expression nodes
ExpressionNodeFunctionMin An expression node that finds the minimum of two double expression nodes
ExpressionNodeFunctionMult An expression node that multiplies two double expression nodes
ExpressionNodeFunctionNot An expression node that computes the logical not of a bool expression node
ExpressionNodeFunctionNotEquals An expression node that finds out if two double expression nodes are un-equal
ExpressionNodeFunctionOr An expression node that computes the OR of two bool expression nodes
ExpressionNodeFunctionSub An expression node that subtracts two double expression nodes
ExpressionNodeFunctionXOr An expression node that computes the XOR of two bool expression nodes
ExpressionNodeTable Expression node that takes an input value and performs a lookup in a table. Linear interpolation is performed on the values in the table to obtain the output value.
ExpressionNodeVariable An expression node that contains a variable double.
LogicalCondition 
SensorT A sensor retrieves a value from the simulation and acts as a variable in the control expressions.

Default implementation of ISensorT interface.

SensorDescription Sensor description defines where the sensor gets its data from.

Use the unit of the Quantity to specify in which unit the sensor is supposed to return its value, automatically converting the value from the engine units to this unit.

SensorDouble 
SensorTimeSeries Sensor that gets the value from a time series
State State in ControlStateMachine.

Use CreateState(IAction) to create a new state and add it to the state matchine instance.

StateTransition Holds a logical condition and a State.

The logical condition can be null, which evaluates to true.

StateTransitionTable A list of state transition. NextState() return the State of the first StateTransition from the list with an active logical condition.
TimeSeriesInfo Time series info.

If both _itemNumber and _itemName is specified, the _itemNumber takes precedense and the _itemName is only used for validation.

VariableExpression 

Interfaces

IAction Base interface for an action.
IControlFunctionDischargeDemandLookup 
IControlFunctionTime Interface for control functions that are aware of time or/and stores a state which changes with time.

A "default control functions" that depends only on their parameters need not implement this interface.

A control function which has a state, needs to implement this interface and also IModelStateReadWrite.

IExpressionNode Double node of expression tree
IExpressionNodeBool Bool node of expression tree
ISensor A sensor retrieves a value from the simulation and acts as a variable in the control expressions.

This interface should never be implemented directly, but always through the ISensorT interface.

ISensorT A sensor retrieves a value from the simulation and acts as a variable in the control expressions.
ISensorDouble A sensor retrieves a value from the simulation and acts as a variable in the control expressions.

This sensor returns a double and includes unit conversion.

Enumerations

ActionTargetGroupTypes The group types of the target
ActionTargetTypes The types of structures
ActionTypes Types of actions
SensorLocationType Location of sensor