Click or drag to resize

DHI.Mike1D.Engine Namespace

MIKE 1D computational engine.
Classes
  ClassDescription
Public classCalendarConverter
Support class for conversions between DateTime objects and Modified Julian Dates Modified Julian Date is the number of days since November 17, 1858.
Public classCatchmentModifierInfo
Specification of where to apply a catchment value modifiers
Public classDistanceCalculator
Class to calculate distances from a location to any point in the network.

Use CalculateDistances(ILocation) to start a calculation, and extract data from Distances.

Public classEmptySourcePointProxy
The empty source point proxy. Use the static Instance property to get one.
Public classEngineEventArgs
Event data for a status changed event.
Public classEngineExtensions
Class with extensions methods for the engine classes
Public classEngineFindExtensions
Extension methods for searching in the engine classes
Public classEngineNet
The EngineNet holds the network that is used for the computations. It is the main entrance to module data/state.
Public classEngineNetBoundaryConnector
Class for connecting boundaries to EngineNet (HD).

It can also connect boundaries to XXX, for creating an LTS job list where EngineNet and HD is not required.

Public classEngineNetCatchmentConnector
Class connecting catchments to HD

It handles both live catchment values and values from RR result files.

Public classEngineNetFactory
Factory Class for creating engine classes.

NOTE: This should be the only component depending on the dataaccess components, especially the NetworkDataAccess classes.

If desired, this can be moved to another project, to remove dependencies from EngineNetwork to DataAccess components.

Public classEngineNetMPIFactory
Factory Class for creating engine classes.

NOTE: This should be the only component depending on the dataaccess components, especially the NetworkDataAccess classes.

If desired, this can be moved to another project, to remove dependencies from EngineNetwork to DataAccess components.

Public classEngineNetSimple
Engine net simple
Public classEngineNetSimpleFactory
Factory for creating EngineNetSimple
Public classEngineNode
A general node without volume (river node).
Public classEngineNodeBasin
Basin node
Public classEngineNodeManhole
The engine representation of a Manhole, specifying Diameter.
Public classEngineNodeOutlet
An Outlet is a volume free node where water flows out of the system.

An outlet is the only type of open boundary that does not need a boundary condition

An outlet can have a boundary condition (water level/QH), in which case the water can also flow into the system.

Public classEngineNodes
List of EngineNode's, providing functionality for fast searching on node id.

The list does not allow nodes with the same id.

Public classEngineNodeStructure
A node without volume, but with INodeStructure functionality.
Public classEngineNodeVolume
A node with volume. Usually it is where several sewer links are joining in the network.
Public classEngineReach
A reach is the common representation used for branch and links. A reach may hence be either a part of a river or a pipe.

Digipoints are found in the LocationSpan

Public classEngineReaches
List of EngineReaches.
Public classEngineReachMap
Helper class for fast searcing of enginereaches

If storing a large amount of data in each span, consider instead one of the NetworkDataT classes. This class is a light-weight version of the NetworkDataT implementation.

It does fast lookup in a dictionary of span-id's, containing a list of spans for each id, and it does linear searching in the chainages.

Public classEngineRoutingElement
A routing element spans from the previous element location to this element location, or if no previous element, then the start of the reach.

Within a routing element the incoming discharge can be routed by different methods specified in the RoutingMethod. All incoming discharge into the element is routed by the method (i.e. an inflow point source will have the same effect regardless of where in the routing element it is connected).

Public classEngineRoutingReach
A reach that calculates the flow based on some routing scheme instead of a dynamic scheme.

A routing reach contains a number of Elements which defines routing method, and optionally how to calculate water levels. It also contains a number of RoutingGridPoint in the GridPoints list. There may be more grid points than routing elements.

Public classEngineSewerJunctionNode
A sewer junction node. It does not have any volume
Public classEngineShadowReach
A shadowreach is a used during MPI execution to store reach state for the reaches that connects different subdomains.
Public classEngineTime
NetworkEngine time.
Public classEngineTimeCheckPointController
The check point controller contains functionality for limiting the time step to a set of check points in time.

It contains itself a list of check points, where check points can be added, CheckPoints.

It also contains a list of ITimeCheckPointSet, CheckPointSets, in case a user implementation of a check point set is appropriate (e.g. constant equidistant check points)

All check points within the list of check points and the list of check point sets will be considered as check points.

Public classEngineTimeSteppingAdaptive
Class handling adaptive time stepping
Public classEngineTimeSteppingConstant
Class handling constant time stepping
Public classEngineTimeSteppingDecoupledFile
Class handling time stepping when running AD based on a HD decoupled file
Public classEngineTimeSteppingTabulated
Class handling tabulated time stepping
Public classEquidistantTimeCheckPointSet
Class implementing a check point set with equidistant time check points.
Public classGridPoint
Base class for all gridpoints
Public classGridPoints
List of gridpoints
Public classHGridPoint
Storage point where water level is defined. Represents the water level and the volume between prev and next Q-point.
Public classLateralLinkCrestLevels
Crest levels of lateral link, river model and surface model.

Can store the crest level as cross section data.

Public classLeapingWeir
A leaping weir is a junction node which connects three reaches. The third reach is connected through a bottom opening, named a Leaping Weir. If the water runs fast, the water may leap over the weir, i.e. the speed of the water will effect the flow through the weir.

The weir is characterised by a length (WeirLength) and a width (WeirWidth).

Based on the article of Oliveto, Giuseppe. (1998). "Sewerage overflows: new researches on bottom openings and side weirs". Excerpta. 12. 251-281.

Public classLinkRegulationStructure
Link regulation structure, specific for link regulation reaches.
Public classNetworkDataStateReader
Extension class handling network state reading
Public classNetworkStateReaderTNode, TReach
Helper class for applying a network state to the network module.
Public classNetworkStateWriter
Public classNetworkStateWriterTReach
Helper class for writing network state to state file.
Public classNetworkStateWriterTNode, TReach
Helper class for writing network state to state file.
Public classNodeCover
A cover on top of EngineNodeSewer. Covers can be expanding, sealed (contracting until a narrow tube) or spilling. Spilling covers will spill water out of the cover above a certain water level. Covers are connected to EngineNodeSewer with a Bridge Pattern (EngineNodeSewer as a reference to a NodeCover)
Public classNodeCoverExpanding
An expanding cover on top of EngineNodeSewer. Covers are connected to EngineNodeSewer with a Bridge Pattern (EngineNodeSewer as a reference to a NodeCover)
Public classNodeCoverSealed
A cover on top of EngineNodeSewer. Covers can be expanding, sealed (contracting until a narrow tube) or spilling. Spilling covers will spill water out of the cover above a certain water level. Covers are connected to EngineNodeSewer with a Bridge Pattern (EngineNodeSewer as a reference to a NodeCover)
Public classNodeCoverSpilling
A spilling cover on top of EngineNodeSewer. Spilling covers will spill water out of the cover above a certain water level. Covers are connected to EngineNodeSewer with a Bridge Pattern (EngineNodeSewer as a reference to a NodeCover)
Public classNodeMaxInflowReservoir
A functionality to node to limit total inflow from surface. Total inflow in m3/s, from multiple sources.

The class handles two types of inflow, surface inflow and catchment runoff inflow. The procedure models that the catchment runoff inflow "runs through" the surface model before entering the node.

Excess catchment runoff (larger than the MaxInflowFromSurface) is retained in the WaterVolumeInReservoir ([m3]). When a surface model is present, the coupling procedure must transfer the reservoir volume to 2D model and empty this reservoir by calling EmptyReservoir.

The net inflow to the combined system is CatchmentQ. On top of that there may be an exchange of water between 1D and 2D. The CatchmentQ is split into three parts

CatchmentQ = <see cref="P:DHI.Mike1D.Engine.NodeMaxInflowReservoir.ActualCatchmentInflow" /> + <see cref="P:DHI.Mike1D.Engine.NodeMaxInflowReservoir.CatcmentQRoutedToSurface" /> + <see cref="P:DHI.Mike1D.Engine.NodeMaxInflowReservoir.WaterVolumeInReservoir" />/dt
where 1) goes into the network, 2) is routed to the surface (when surface model is present), and 3) is what is left due to max inflow limit.

Inflow to MIKE 1D:

q_in_1D = <see cref="P:DHI.Mike1D.Engine.NodeMaxInflowReservoir.ActualSurfaceInflow" /> + <see cref="P:DHI.Mike1D.Engine.NodeMaxInflowReservoir.ActualCatchmentInflow" />
Inflow to 2D:
q_in_2D = -<see cref="P:DHI.Mike1D.Engine.NodeMaxInflowReservoir.ActualSurfaceInflow" /> + <see cref="P:DHI.Mike1D.Engine.NodeMaxInflowReservoir.CatcmentQRoutedToSurface" /> + <see cref="P:DHI.Mike1D.Engine.NodeMaxInflowReservoir.WaterVolumeInReservoir" />/dt

Public classProxyUtil

Class for easing handling of proxies, and providing proxy functionality for the entire EngineNet, spanning quantities from all its modules.

Public classQGridPoint
Grid point where discharge is defined. Represents the discharge from the prev to the next H-point.
Public classResultDataEngineNetChecker
Checks whether an IResultData exactly matches an enginenet.
Public classRoutingGridPoint
Routing grid point, where discharge is defined. Can also contain a water level, and a cross section.

There is a routing grid point in the end of every EngineRoutingElement.

Public classSourceProxyExtensions
Extension class for ISourcePointProxy implementations
Public classSourceProxySetWrapperTSourceProxy
Class that wraps a number of source proxies in one proxy.
Public classStructureGridPoint
Grid point containing one or more structures. Structure GridPoints replaces Q-points in the scheme.
Structures
  StructureDescription
Public structureComponentValues
Class containing value for a component
Public structureEngineNodeReachConnection
Structure containing enginereach and which end that it is connected to (start or end)
Interfaces
  InterfaceDescription
Public interfaceIComponentSourcePoint
A component point where a component source contribution can be added.
Public interfaceIEngineTimeCheckPointSet
Interface for a check point set. It must be able to provide the next check point from some specified time.

A checkpoint is a point in time which the engine must hit exactly.

Public interfaceIEngineTimeStep
Interface for controlling the size of the time step
Public interfaceIEngineTimeStepAdaptive
Interface for controlling the size of the time step adaptively
Public interfaceIExternalForcing
Interface where you can add a contribution to the forcing of the system.
Public interfaceIGridPoint
Interface to GridPoint. If access to GridPoint is needed from outside the network engine, then it should happen through this interface.
Public interfaceIModule
Interface to Engine modules
Public interfaceIModuleNetwork
Interface extending the IModule interface with network features.
Public interfaceIModuleNetworkTNode, TReach
Interface extending the IModule interface with network features.
Public interfaceIModuleNode
Node in an IModuleNetwork
Public interfaceIModulePointState
Interface for the state of a point. NOT USED.
Public interfaceIModuleReach
Reach in an IModuleNetwork
Public interfaceIModuleReachState
Interface for a module reach state
Public interfaceINodeStructure
Interface for a node structure.

A node structure must have three reaches connected, and the 3rd reach is a special reach where the discharge into the reach is controlled by the CalculateDischarge(DateTime) method.

Public interfaceIProxyProvider
Interface for a proxy provider on a network
Public interfaceIQGridPoint
Interface to QGridPoint. If access to QGridPoint is needed from outside the network engine, then it should happen through this interface.
Public interfaceISedimentSourcePoint
A point where a sediment source contribution can be added.
Public interfaceISourcePoint
A point where a source contribution can be added.
Public interfaceISourcePointImplicit
A point where a source contribution can be added, containing an implicit term in the form of a derivative with respect to the state variable.

Current usage is adding a source that depends on the water level, and including a water level derivative to take the change of water level into account, i.e.

Q_s = Q_s^n + dQdh * (H^{n+1} - H^n)

The actual source added can be calculated using the Evaluate method after the time step has finished (at the PostTimeStepEvent).

Public interfaceISourcePointProxy
Interface providing quantities and source points.
Public interfaceISourcePointProxyProvider
Interface that provides source point proxies for different parts of the network.
Public interfaceISourcePointStatistics
Statistic on a source point. Contains total inflow and total outflow.
Delegates
  DelegateDescription
Public delegateEngineNetTimeDelegate
Delegate that is used when triggering a PostTimeStepEvent event.
Public delegateEngineNetTimeStepDelegate
Delegate that is used when triggering a PreTimeStepEvent or ApplyExternalSourcesEvent.
Enumerations
  EnumerationDescription
Public enumerationEngineReachEnd
Enumeration specifying an end of the reach.
Public enumerationEngineStatus
State of the simulation
Public enumerationGridPointTypes
Enumeration of grid point types.

Defined as flag so they can be used as selection, i.e.

GridPointTypes allow = HGridPoint | QGridPoint

Public enumerationOpenBoundarySubType
Sub type of open boundary
Public enumerationOpenBoundaryType
Types of open boundaries