DHI.Mike1D.Engine Namespace

MIKE 1D computational engine.

Classes

CalendarConverter Support class for conversions between DateTime objects and Modified Julian Dates Modified Julian Date is the number of days since November 17, 1858.
CatchmentModifierInfo Specification of where to apply a catchment value modifiers
DistanceCalculator 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.

EmptySourcePointProxy The empty source point proxy. Use the static Instance property to get one.
EngineEventArgs Event data for a status changed event.
EngineExtensions Class with extensions methods for the engine classes
EngineFindExtensions Extension methods for searching in the engine classes
EngineNet The EngineNet holds the network that is used for the computations. It is the main entrance to module data/state.
EngineNetBoundaryConnector 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.

EngineNetCatchmentConnector Class connecting catchments to HD

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

EngineNetFactory 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.

EngineNetMPIFactory 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.

EngineNetSimple Engine net simple
EngineNetSimpleFactory Factory for creating EngineNetSimple
EngineNode A general node without volume (river node).
EngineNodeReachConnection Structure containing enginereach and which end that it is connected to (start or end)
EngineNodeBasin Basin node
EngineNodeManhole The engine representation of a Manhole, specifying Diameter.
EngineNodeOutlet 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.

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

The list does not allow nodes with the same id.

EngineNodeStructure A node without volume, but with INodeStructure functionality.
EngineNodeVolume A node with volume. Usually it is where several sewer links are joining in the network.
EngineReach 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

EngineReaches List of EngineReaches.
EngineReachMap 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.

EngineRoutingElement 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).

EngineRoutingReach 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.

EngineSewerJunctionNode A sewer junction node. It does not have any volume
EngineShadowReach A shadowreach is a used during MPI execution to store reach state for the reaches that connects different subdomains.
EngineTime NetworkEngine time.
EngineTimeCheckPointController 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.

EngineTimeSteppingAdaptive Class handling adaptive time stepping
EngineTimeSteppingConstant Class handling constant time stepping
EngineTimeSteppingDecoupledFile Class handling time stepping when running AD based on a HD decoupled file
EngineTimeSteppingTabulated Class handling tabulated time stepping
EquidistantTimeCheckPointSet Class implementing a check point set with equidistant time check points.
FloodMapConnector Class connecting the engine with the FloodMap library.
GridPoint Base class for all gridpoints
GridPoints List of gridpoints
HGridPoint Storage point where water level is defined. Represents the water level and the volume between prev and next Q-point.
LeapingWeir 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.

LinkRegulationStructure Link regulation structure, specific for link regulation reaches.
NetworkDataStateReader Extension class handling network state reading
NetworkStateReaderTNode, TReach Helper class for applying a network state to the network module.
NetworkStateWriter 
NetworkStateWriterTReach Helper class for writing network state to state file.
NetworkStateWriterTNode, TReach Helper class for writing network state to state file.
NodeCover A cover on top of EngineNodeSewer. Covers can be expanding, sealed (contracting until a narrow tube), spilling or displaceable. Spilling and displaceable 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)
NodeCoverDisplaceable A displaceable spilling cover on top of EngineNodeSewer with dynamically changing opening due to pressure 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)
NodeCoverExpanding An expanding cover on top of EngineNodeSewer. Covers are connected to EngineNodeSewer with a Bridge Pattern (EngineNodeSewer as a reference to a NodeCover)
NodeCoverSealed 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)
NodeCoverSpilling 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)
NodeMaxInflowReservoir 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 = ActualCatchmentInflow + CatcmentQRoutedToSurface + 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 = ActualSurfaceInflow + ActualCatchmentInflow Inflow to 2D: q_in_2D = -ActualSurfaceInflow + CatcmentQRoutedToSurface + WaterVolumeInReservoir/dt

ProxyUtil

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

QGridPoint Grid point where discharge is defined. Represents the discharge from the prev to the next H-point.
ResultDataEngineNetChecker Checks whether an IResultData exactly matches an enginenet.
RoutingGridPoint 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.

SourceProxyExtensions Extension class for ISourcePointProxy implementations
SourceProxySetWrapperTSourceProxy Class that wraps a number of source proxies in one proxy.
StructureGridPoint Grid point containing one or more structures. Structure GridPoints replaces Q-points in the scheme.

Structures

ComponentValues Class containing value for a component

Interfaces

IComponentSourcePoint A component point where a component source contribution can be added.
IEngineTimeCheckPointSet 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.

IEngineTimeStep Interface for controlling the size of the time step
IEngineTimeStepAdaptive Interface for controlling the size of the time step adaptively
IExternalForcing Interface where you can add a contribution to the forcing of the system.
IGridPoint Interface to GridPoint. If access to GridPoint is needed from outside the network engine, then it should happen through this interface.
IModule Interface to Engine modules
IModuleNetwork Interface extending the IModule interface with network features.
IModuleNetworkTNode, TReach Interface extending the IModule interface with network features.
IModuleNode Node in an IModuleNetwork
IModulePointState Interface for the state of a point. NOT USED.
IModuleReach Reach in an IModuleNetwork
IModuleReachState Interface for a module reach state
INodeStructure 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.

IProxyProvider Interface for a proxy provider on a network
IQGridPoint Interface to QGridPoint. If access to QGridPoint is needed from outside the network engine, then it should happen through this interface.
IRoutingElementCalculator Interface for calculating routing
ISedimentSourcePoint A point where a sediment source contribution can be added.
ISourcePoint A point where a source contribution can be added.
ISourcePointImplicit 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).

ISourcePointProxy Interface providing quantities and source points.
ISourcePointProxyProvider Interface that provides source point proxies for different parts of the network.
ISourcePointStatistics Statistic on a source point. Contains total inflow and total outflow.

Delegates

EngineNetTimeDelegate Delegate that is used when triggering a PostTimeStepEvent event.
EngineNetTimeStepDelegate Delegate that is used when triggering a PreTimeStepEvent or ApplyExternalSourcesEvent.

Enumerations

EngineReachEnd Enumeration specifying an end of the reach.
EngineStatus State of the simulation
GridPointTypes Enumeration of grid point types.

Defined as flag so they can be used as selection, i.e. GridPointTypes allow = HGridPoint | QGridPoint

OpenBoundarySubType Sub type of open boundary
OpenBoundaryType Types of open boundaries