DHI.Mike1D.Generic Namespace

Generic library for the MIKE 1D system.

Classes

AbstractDataAccess Abstract base class for all Mike1D data access modules
AbstractLocationSpan Abstract class implementing the base functionality for a location span
AbstractNetworkDataExtensions Extensions to the NetworkDataT
ActionControlInfo Info on a given action control, containing the Id of the action control, type of control and unit, if applicable.
ADQuantities Provides methods for creating AD quantities.
Array2DFlattener Helper class for serializing 2D arrays of doubles
AssemblyResolver Helper class for resolving assemblies based on file names.
CalibrationPlot Class that write a time series file and a plc file with calibration data.
CommandLineParser Class to parse command line arguments and store it as key-value pairs. Each argument must be prepended with on of '-', '--', '/' -key --key /key If a value is included, it must be split with ":" or "=" -key=value -key:value If spaces are needed in the value, use ' or " to incapsulate -key:"value with spaces" A key without a value will be given the value "true"
CompareObjects Class that allows comparison of two objects of the same type to each other. Supports classes, lists, arrays, dictionaries, child comparison and more.
Connection Connection specifications for file access.
ConnectionExtension Extension methods and static for IConnection
ConsoleProgress Class for writing progress to a text console
Constants Constants used throughout Mike1D
CustomTypes A CustomType contains information for types of objects that needs to be stored in the MIKE 1D setup file (.m1dx) but which are not part of the MIKE 1D system.
DateTimeTable2D 2D table with DateTime as the type of values in the first axis.

If setting the YearlyVariation, then all dates within the first year in the XAxis is assumed to be cyclicly repeating.

DateTimeYTable Version of XYGenericTableTX, TY containing DateTimes and doubles
DDoubleGetSetBox Class boxing DDoubleGetter and DDoubleSetter implementing IDoubleGetSet
DDoubleGetterBox Class boxing DDoubleGetter and implementing IDoubleGetter
DDoubleTimeGetterBox Class boxing DDoubleGetter and implementing IDoubleGetter
DDoubleTimeVectorGetterBox Class boxing a set of [!:DDoubleGetter].
DDoubleVectorFractionGetterBox Class boxing a set of FuncT, TResult.
DDoubleVectorGetSetBox Class boxing a set of IDoubleGetSet.
DDoubleVectorGetterBox Class boxing a set of FuncTResult.
DerivedQuantity Quantity derived from another quantity
DHITracer Wrapper around the microsoft TraceSwitch class Messages are prepended with "Level (DisplayName, DateTime.Now)::". To get the message itself, split the string on "::"
DiagnosticItem One single diagnostics item/issue, containing one message.

A message can have a number of DiagnosticsValue attached, giving a number and a item type. The unit is always the default unit of the type (SI).

DiagnosticItemID One single diagnostics item/issue, containing one message, based on the MIKE 1D fixed set of messages (resource-based).

A message can have a number of DiagnosticsValue attached, giving a number and a item type. The unit is always the default unit of the type (SI).

DiagnosticItems Implements a list of IDiagnosticItem's
Diagnostics A collection of error, warning and hint messages. It implements a tree like strukture of IDiagnostics, to be able to handle the diagnostics in a stack-trace like manner. Whenever an item is added, an event is triggered. Calling any of the recursive method must be done from one thread at a time only, otherwise it will fail.
DiagnosticsException A custom exception, used by the IDiagnostics system.
DiagnosticsHandlerDiagnosticsHandler collects all diagnostics messages entered by any of the Write method and triggers a MessageEvent. However, it only issues the same message 100 timers, the statistics for that can be retrieved by WriteSkippedMessagesSummary

It is thread safe, i.e. it handles synchronization issues between potential several worker threads.

To connect a diagnostics object for "live" messages, connect the DiagnosticsHandler object directly to the Diagnostics object: diagnostics.DiagnosticsEvent += diagnosticsHandler.Write; To write all messages of a diagnostics object, call the WriteAllIssuesRecursive(IDiagnostics) method.

DiagnosticsList Implements a list of IDiagnostics.
DiagnosticsLocation Location of diagnostics message
DiagnosticsToConsole Static functions which output diagnostics to the console
DiagnosticsValue A diagnostics value class. A diagnostics value contains a value and a type
DomainThreadPool A pool of threads, having a specific number of threads available and waiting.

This implementation assures a specified number of threads and allow assigning specific tasks to specific threads.

When a specific number of tasks has to synchronize at certain points, the same specific number of threads is required running at the same time.

If one task has to follow another in a number of parallel "pipelines", it is required to assign specific tasks to specific threads.

DoubleElementSetProxySetWrapper Class that wraps a number of double-reach proxies in one proxy.
DoubleProxySetWrapper Class that wraps a number of double proxies in one double proxy.
DoubleReachProxySetWrapper Class that wraps a number of double-reach proxies in one proxy.
DoubleVectorProxySetWrapper Class that wraps a number of double-vector proxies in one double proxy.
ElementDefinition Default implementation of IElementDefinition.
ElementDefinitions Class implementing a list of IElementDefinition's Required for generic list COM interop
ElementSetDefinition Default implementation of IElementSetDefinition Defines a set of elements that share some common properties: - All elements must be of same ElementGeometry - All vertices of the elements must be of same CoordinateType
EmptyDoubleElementSetProxy Default empty proxy
EmptyDoubleProxy Default empty proxy. Use Instance to get hold of one
EmptyDoubleReachProxy Default empty proxy
EquidistantTimeCheckPointSet Class implementing a check point set with equidistant time check points.
ExtraForQuantities Provides methods for creating IDs and Description of quantities with extra string. For example, for extra = "Checksum, Total, test" we get the following strings: ExtraForId = "ChecksumTotalTest" ExtraForDescription = ", Checksum, Total, test" In ExtraForId we capitalize every word and remove the commas and the spaces.
GenericExtensions Utility class, containing extension methods for classes in the generic namespace
GenericExtensionsKVPComparer Helper class for sorting KeyValuePair
GenericXmlBridgeTDataAccess A generic bridge that has read/write capabilities for accessing xml files using a DataContractSerializer.
HotstartInfo Structure to store hotstart information.
HtmlContentSection And IHTMLSectionItem that include HTML content directly in InnerHtml
HTMLExtensions Extension class for HTML log files
HTMLLog Base class for HTML file writers.

The HTML file contains a number of Sections, and each section contains a number of Items.

It is handling log file rolling, i.e. when a new mysim.html log file is created, the existing is renamed to mysim01.html, and the mysim01.html is renamed to mysim02.html etc. up til MaxNumberOfFileBackups.

HTMLSection An HTML section contains a name and a number of summary items.
HTMLSections A set of HTML sections.
HTMLTableColumn Base implementation of an Columns.
HTMLTableColumnGetterT, TOut A column that uses a getter to extract a TOut value from the row data object

This column does not support Accumulate.

HTMLTableColumnStringGetterT A column that uses a getter to extract a string value from the row data object
HTMLTableColumnTimeSpanGetterT A column that uses a getter to extract a TimeSpan value from the row data object, and accumulate if necessary
HTMLTableColumnValueGetterT A column that uses a getter to extract a double value from the row data object
HTMLTableItemT An HTML table item, containing a number of row data in RowData, and a number of Columns that outputs a "value" from a row data item.
HyperThreadingTester Class to test if system has Hyper-Threading enabled.

A polynomial function is evaluated a number of times in parallel, and timed using various number of threads. From those timings, it is evaluated whether hyper-threading is enabled or not

This will only return a correct value if the system being evaluated is mostly idle. If the system is stressed, this may give incorrect results.

IniFile Read .ini configuration files
IniFileSection Class to hold a named section of an ini file.
InterpolatableClosestT Class implementing IInterpolatableT, by returning the closest of the values in the Interpolate(Double, T, T) method.

This can be used if no interpolation is possible.

InterpolatableDouble Class implementing IInterpolatableT for type double
InterpolatableDoubleArray Class implementing IInterpolatableT for type double array.

The arrays must have same lengths in order for interpolation to take place. In the constructor must be specified wether length differences is allowed or if it shold fail (throw an exception). If different lengths are allowed, it will return closest array, i.e., it will switch at the ratio of 0.5.

KnownTypes Contains all DHI.Mike1D known types, i.e. all types that has the DataContractAttribute
LicenseChecker Provides access to the DHI license system
ListDateTimes Class implementing a list of DateTime's Required for generic list COM interop
Listdoubles Class implementing a list of double's Required for generic list COM interop
Listlongs Class implementing a list of long's Required for generic list COM interop
Liststrings Class implementing a list of string's Required for generic list COM interop
Location Class describing a location in a network. ,'s are not allowed in the ID.
LocationRelative A location that is relative, i.e. the exact chainage is not known.
Locations Class implementing a list of ILocation's Required for generic list COM interop
LocationSpan Class representing a span along a river or a pipe.
LocationSpanComparer Comparer for comparing location span id and start/end chainage.
LocationSpanEqualityComparer Comparer for comparing location span id and start/end chainage.
LocationSpanMapT Helper class for fast searcing for objects defined in location spans or by reach id's.

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, i.e. for a given span-id it does linear searching in the chainages.

It can work for as well location-spans as reach-id's (covering an entire span), though it does not support location-span with id matching a reach-id (undefined behavior).

LocationSpans Class implementing a list of ILocationSpan's Required for generic list COM interop
MathUtil Collection of static methods used in Mike1D.
MathUtilDataForSearchingNegate An MathUtilIDataForSearching class that negates the value in the array/list
MergeSort Class performing a merge sort of an IListT.

It contains methods for both the iterative and recursive algorithm. The recursive is provided for reference only, use the iterative when possible.

As compared to QuickSortT, merge sort is stable (preserves order of equal elements), but uses more memory (an extra array of the same size). Quick sort is un-stable, but performs in-place sorting.

MergeSortT Class performing a merge sort of an IListT

This class contains method for performing merge sort using the traditional recursive approach. This class is provided for reference, the iterative approach in SortTT(IListTT) is preferable.

As compared to QuickSortT, merge sort is stable (preserves order of equal elements), but uses more memory (an extra array of the same size). Quick sort is un-stable, but performs in-place sorting.

Mike1DException Exception derived from standard exception. Included to be able to distinguish system exceptions from Mike1D exceptions
Mike1DRuntimeException Exception derived from standard exception. This exception is thrown when errors occur that have already been included in the Diagnostics framework. If SimLauncher encounters a Mike1DRuntimeException, then the exception message is ignored - it is assumed that the error message is in the Diagnostics framework, and the diagnostics are reported to the user.
MinMaxValueContainer Class for recording min and max value, including time where min and max value occurred.
NetworkCrossSectionPoint A point on the cross section
NetworkDataT

A network value is a value that can vary in the network. A value can be specified as a: - global value - value on an entire reach with a given ID - value on a number of locationspans - value on a number of locations - value on a nodeId

It is possible to specify two values on one location, one valid from the negative side, and one valid from the positive side.

If a value is given on the entire reach, then it can not be specified on locations.

When searching for a value on a given location, the priority is as follows: - A value on the entire reach is used, if existing. - If the given location is in a span, the span value is used - If the given location is in between two value-locations/spans, the value is interpolated, if CanInterpolate - It the given location is within ExtrapolationDistance of a value location, the value is used. - If nothing else is found, false is returned, and a default or the global value should be used.

If an entire network is to be populated with values, for performance reasons, you should work on a reach-by-reach manner, using GetReachData(String)

NetworkDataDouble A network value of type double. See NetworkDataT for details.

Required for COM interop.

This class adds implementation for the COM specific part of the INetworkDataDouble.

NetworkDataDoubleArray A network value of type double[]. NetworkDataT for details.

The double[]'s do not need to have the same length. However, consistent interpolation can only take place if all have same lenghts.

See FailOnLengthDifferences on how to set behavior if lengths differ. Default value is to fail.

NetworkDataInterpT A set of network data that can interpolate.

NetworkDataT for details

NetworkDataSetT Implementation of the INetworkDataSetT.
NetworkDataSetDouble A network data set class containing data of type double

Required for COM interop.

This class is a COM usable version of the NetworkDataSetT

NetworkGenericExtensions Class with various extension methods related to INetworkGeneric
NetworkGridPoint Base implementation of INetworkGridPoint
NetworkHGridPoint Base implementation of INetworkHGridPoint
NetworkLocationNode An INetworkLocation for a node
NetworkLocationReach An INetworkLocation for a reach
NetworkReachDataSetT A set of values stored on reach. Contains values on locations or on spans. Implements IReachDataInterpolatorT for interpolation
ObservedData Class containing observed data for the model element
Pair Static methods for the PairTKey, TValue struct
Polygon A polygon is a set of 2-D points.
PredefinedQuantityData Static class containing the PredefinedQuantityTable.
PredefinedQuantityDataAD Static class containing the PredefinedQuantityTableADComponent.
PredefinedQuantityProperties Properties for PredefinedQuantity.
PredefinedQuantityTable A PredefinedQuantityTable for each PredefinedQuantity contains its Quantity in order to get hold of Quantity.
PredefinedQuantityTableADComponent Dictionary from PredefinedQuantityAD to PredefinedQuantityProperties used by ADQuantities.Create() to create various Quantities for AD components.
PredefinedQuantityTableST Dictionary from PredefinedQuantityST to ST component id independent Quantity.
PredefinedQuantityTableSTComponent Dictionary from PredefinedQuantityST to PredefinedQuantityProperties used by STQuantities.Create() to create various ST component id dependent Quantities.
PriorityQueueT A priority queue. It will return the value with the highest priority/compare value first. Multiple occurences of the same object/compare value is allowed.

You can update an element in the priority queue, thereby reposition it in the queue. Save the PriorityQueueTNode returned by Enqueue(T), and updated the value by setting the Value.

Remarks

It is based on a balanced heap data structure (a list handled as a tree structure).

In cases where priority value equals, it does first-in-first-out.

Performance: It has O(log(n)) enqueueing, dequeueing and updating of key.

PriorityQueueTNode A node in the priority queue. Updating the value of the node will update the priority key value and reposition the node in the search tree.
PriorityQueueTKey, TValue A priority queue. It will return the value with the hightest priority/key first. Multiple occurences of the same priority/key is allowed.

You can update the priority of an element in the priority queue, thereby reposition it in the queue. Save the PriorityQueueTKey, TValueNode returned by Enqueue(TKey, TValue), and updated the value by setting the Key.

Remarks

It is based on a balanced heap data structure (a list handled as a tree structure).

In cases where priority value equals, it does first-in-first-out.

Performance: It has O(log(n)) enqueueing, dequeueing and updating of key.

PriorityQueueTKey, TValueNode A node in the priority queue. It contains the key and the value. Updating the key will reposition the node in the priority queue.
PropertyUpdater Class for updating properties or fields of an object, based on a string representation of the propery/field.
PropertyUpdaterObjectMemberData Data for an object and the member of the object that is part of the property-string
ProxyExtensions

Extension methods for easing handling of proxies.

It provides some static convenience functions for proxies

Quantities Class implementing a list of IQuantity's Required for generic list COM interop
Quantity A data quantity is a combination of an ID and an EUM item and unit.

The data item type is one of the EUM types

For AD components, they will usually have the same datatype but different ID's.

It is not allowed to edit an IQuantity. Create a new one, if required.

QuantityBaseIdComparer IEqualityComparer for IQuantity that compares based on the BaseId of the quantity (without komma and spaces)
QuantityComparer IEqualityComparer for IQuantity that compares the id as is (including commas and spaces)
QuantityFullComparer IEqualityComparer that also includes the Description in the comparison
QuantityGroupComparer Provides a equality comparer that groups quantities of the same type.

Quantities like SnowCover, SnowCover_2, SnowCover_3 are in this context grouped under one.

QuantityProxySetWrapperTQuantityProxy Class that wraps a number of quantity proxies in one proxy.
QueueDateTimes Class implementing the IListDateTimes storing data in a queue/circular array.
QuickSort Class performing quicksort of an IListT

As compared to MergeSortT, merge sort is stable (preserves order of equal elements), but uses more memory (an extra array of the same size). Quick sort is un-stable, but performs in-place sorting.

QuickSortT Class performing quicksort of an IListT

As compared to MergeSortT, merge sort is stable (preserves order of equal elements), but uses more memory (an extra array of the same size). Quick sort is un-stable, but performs in-place sorting.

ReachLocationValueT A value on a reach. If on a span, then both start and end chainage is set, if on a location only the start chainage is set.
ReachSearcherT Class for searching reaches, generic such that several reach types can be entered.
RelationTableA, B A relational table that relates an object of type A to an object of type B.
SerializerDoubleArrayHandler Class that writes a double array to one long string
SerializerFilePathHandler A handler that handles FilePath's during (de)serialization.
SerializerSurrogate This class is used when serializing/deserializing, either to replace one (de)serialized type with another, or to setup relations that the (de)serializer can not itself setup.
SerializerSurrogateFilePath This class is used when serializing/deserializing, to handle base paths of FilePath (input and result files). When serializing (saving to xml), every FilePath is made relative to the xml file.
SimulationTimer Generates an event at regular intervals of a simulation.

This class will trigger events either at every timestep, or at regular intervals.

To trigger events at regular timestep frequency, set the Frequency to a positive value.

To trigger events at regular intervals, set the Frequency to zero, and the Interval to a positive value.

STPredefinedQuantityData Static class containing the PredefinedQuantityTableST.
STQuantities Provides methods for creating ST quantities.
StringAlgorithms Utility class with various string algorithms.
StringDoubleKeyValuePair Class for a pair of strings and doubles
StringDoublePair Class for a pair of strings and doubles
SummedQuantity Summed quantity.
Table2D 2D table class, applying interpolation in 2D table.
TableInterpolator Interpolate a table from two other tables.

The "x-column" of the two tables are merged into one new interpolated x-column by interpolating the min and max values from the two tables, and scale the internal x-values of the two tables to the new min and max value. Then y-values are interpolated from

, using an "x-column" as the range and computing
TimeCheckPointController 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.

TwoDLocation Location used when working with 2D or 3D models
UBGUnitProvider UBG unit provider. Uses the EUM Unit Base Group (UBG) system to determine a unit for a given item.
UserUnitDefaults Static class, containing units for various quantities, both SI and US

A quantity is identified by its id and EUM item type. It is possible to match quantity id's in three ways: 1) Exact match (case insensitive) 2) Id starts with: string starts with a *: "*myid" 3) Id ends with : string ends with a *: "myid*" 4) Id is matching a regular expression: string is inside [] "[regexMatch]"

UserUnitProvider A IUnitProvider based on a specified set of unit definitions.

If a quantity ID is not provided when adding a user units, it will match on the eumItem value only.

Util Collection of handy static utility like methods.
VersionTool Various tools for extracting versions etc.
XYGenericTableTX, TY A series of XY data, stored in two arrays.

Compared to the IXYTable interface and classes, the IAnyTable are capable of storing other values than doubles.

XYPair Holds the level width data of a structure.
XYSeriesExtensions Static extension methods for the IAnyTable and XYTable classes.
XYTable Table of corresponding x and y values, sorted on x values
XYZLocationSpan A location span that is defined by a set of coordinates
XYZTable Table of corresponding x and y values.
XYZTriple Holds the level width data of a structure.
ZLocation A location with a z-value
ZLocationSpan Location span. Identified by two points: Start chainage [m] and end chainage [m]

Structures

PairTKey, TValue Pair of key and value of generic type.
UserUnitInfo Information on a user unit
UserUnitProviderUnitSearch For search strings

Interfaces

IAnyTable An any-table can have any dimension and any type of data, it is a common container for a set of various table types.
IBridge The interface implemented by all MIKE 1D bridges.
IBridgeXml Generic interface for Xml bridge
ICalibratable It contains the information needed for the title of the calibration plot
IConnection 
IControllable If an entity implements the IControllable interface it can be controlled by the ControlModule.
IDiagnosticItem A DiagnosticsItem contains a message, additional information and potentially also list the values that vary in the message string.
IDiagnosticItems 
IDiagnostics Interface for communication of Errors, Warnings and Hints It also includes a tree like strukture of IDiagnostics, called Children, to be able to handle the diagnostics in a stack-trace manner. Whenever a new issue is added, the DiagnosticsEvent is triggered on the IDiagnostics self and all its parents.
IDiagnosticsList Implements a list of IDiagnostics
IDiagnosticsLocation Location of diagnostics message
IDiagnosticsString A string used in Diagnostics. It has an Id, to be used if a translated version of the string is to be used instead. It has a Message which can contain format specifiers on the form {0} etc. It has a list of objects, each of them supporting the ToString method, which must match the format specifiers in the Message.
IDiagnosticsValue A diagnostics value can either be a string or a pair of a double value and a unit, depending on the value of HasUnitValue. An interface system has the opportunity to convert double values to user defined units. By default an engine ofte produce double values in SI units. If HasUnitValue is true, the DoubleValue and Unit must be set. If HasUnitValue is false, the StringValue must be set.
IDoubleElementSetProxy An IQuantityProxy also specifying the geometry that the element values belong to.
IDoubleFractionProxy An IDoubleFractionProxy can interpolate within the current time step, from time N to time Np1.
IDoubleGetSet A Value GetSet can be called any time to get/set the value of the source. It will often just be wrapping a DDoubleSetter and a DDoubleGetter
IDoubleGetter A value getter can be called at any time to provide the actual value of the source.
IDoubleNetworkProxy Interface for a proxy provider on a network
IDoubleProxy An IDoubleProxy gives access to quantities that are offered (can be retrieved) and accepted (can be set).
IDoubleReachProxy An IQuantityProxy also specifying the gridpoints where the element values belong to.
IDoubleSetter A value setter can be called at any time to set the value of the source. It will often just be wrapping DDoubleSetter
IDoubleTimeGetter A value getter can be called at any time to provide the actual value of the source. It will often just be wrapping DDoubleGetter
IDoubleTimeProxy TODO: For IDoubleProxy, datatype should be replaced with struct containing: (ModuleId), itemNumberId, datatype and descriptive name Needed when AD has several items of same datatype and when different modules have items of same datatype.
IDoubleTimeSetter A value setter can be called at any time to set the value of the source. It will often just be wrapping DDoubleSetter
IDoubleTimeVectorGetter A vector getter can be called at any time to provide the actual values of the sources. It will often just be wrapping a list of DDoubleGetter
IDoubleVectorGetSet A Vector GetSet can be called any time to get/set the value of the source. It will often just be wrapping a list of IDoubleGetSet'ers
IDoubleVectorGetter A vector getter can be called at any time to provide the actual values of the sources.
IDoubleVectorProxy An IQuantityProxy gives access to quantities that are offered (can be retrieved) and accepted (can be set) on vector form.
IDoubleVectorSetter A vector setter can be called at any time to set the values of the sources. It will often just be wrapping a list of DDoubleSetter
IElementDefinition Defines geometry of an element. An element can have an Id or/and a number of vertices defining it. TODO: finish summary
IElementDefinitions Interface for a list of IElementDefinition's Required for generic list COM interop
IElementSetDefinition Defines a set of elements that share some common properties: - All elements must be of same ElementGeometry - All vertices of the elements must be of same CoordinateType
IFilePath This class contains information on a file, as well its name and path, and handles relative and absolute (full) paths. When path is relative, it can have a BaseFilePath, used to expand the relative filepath to an absolute (full) path. If a path is relative, and no BaseFilePath is specified, CurrentDirectory is used as BaseFilePath. Examples of legal paths: - "c:\\MyDir\\MyFile.txt" - directory and file - "c:\\MyDir" - only directory - "MyDir\\MySubdir" - relative directory - "\\\\MyServer\\MyShare" - network drive
IHTMLSectionItem An item in the Items
IHTMLTableColumnT, TOut An html table column where row data is of type {T} and the type of the column is {TOut}
IInterpolatableT Interface to implement if the given type can interpolate itself
IListDateTimes Interface for a list of DateTime's Required for generic list COM interop
IListdoubles Interface for a list of Double's Required for generic list COM interop
IListlongs Interface for a list of Int64's Required for generic list COM interop
IListstrings Interface for a list of String's Required for generic list COM interop
ILocation A location is a point in the network. A Location is always a part of the network, and identified by a branch/link id and a chainage
ILocations Interface for a list of ILocation's Required for generic list COM interop
ILocationSpan A span of a reach, based on the reach id, an start and end chainage.
ILocationSpans Interface for a list of ILocationSpan's Required for generic list COM interop
INetworkCatchment A generic network catchment.
INetworkCrossSection A generic cross section
INetworkCrossSectionPoint A point on the cross section
INetworkDataT Network data. Data can be stored - On nodes - On entire links/reaches as link id - On locations using link/reachId + chainage

This interface provides the storing functionality, hence is used for building up a network data object and for iterating through its values. To interpolate in values of a network data quantity, see INetworkDataInterpolatorT. A network data class need not implement the Interpolator interface.

INetworkDataDouble An explicitly typed version of INetworkDataT of type double.

Required for COM interop, since COM can not handle generic types

INetworkDataInterpolatorT Generic interface for getting a value defined on a network. Values can be retrieved - On nodes - On locations using link/reachId + chainage - for a global Id.

Values are interpolated, if possible

INetworkDataInterpolatorSetT Interface for a set of network values of different quantities
INetworkDataInterpolatorTimeSetT A set of network values of different quantities
INetworkDataSetT A set of network data.
INetworkDataSetDouble An explicitly typed version of INetworkDataSetT of type double.

Required for COM interop

INetworkGeneric Generic interface for a network, implemented amongst others by the core engine and the result data.
INetworkGridPoint A generic network grid point.
INetworkHGridPoint A generic network H grid point.
INetworkLocation A INetworkLocation is a location in the network which can either be specified by a node id, or an ILocation.

The IsNodeBased determines whether the NodeId or the Location is set.

INetworkNode A generic network node.
INetworkOpenCrossSection A generic open cross section
INetworkQGridPoint A generic network Q grid point.
INetworkReach A generic network reach.
INetworkReachConnection Connection between node and catchment
INetworkReachDataT Data defined on a reach.
INetworkReachDataDouble An explicitly typed version of INetworkReachDataT of type double.

Required for COM interop, since COM can not handle generic types

INumericArray 
IQuantities Interface for a list of IQuantity's Required for generic list COM interop
IQuantity A data quantity is a combination of an ID and an EUM item and unit.

The data item type is one of the EUM types

For AD components, they will usually have the same datatype but different ID's.

It is not allowed to edit an IQuantity. Create a new one, if required.

IQuantityProxy List of quantities offered/accepted by the proxy.
IReachDataInterpolatorT Generic interface for getting an interpolated value defined on a link/reach of a network.
IReachLocationValueT A value on a reach. If on a span, then both start and end chainage is set, if on a location only the start chainage is set.
IReachLocationValueDouble An explicitly typed version of IReachLocationValueT of type double.

Required for COM interop, since COM can not handle generic types

IReadOnlyNumericArray 
ISerializerSurrogateHandler Interface for classes that handles special behavior when (de)serializing a certain type.
IStateManaged Structures with state must implement IStateManaged. Examples of structures with state are gates, pumps and dambreak structures
IStringDoublePair Interface for a pair of strings and doubles
ITimeCheckPointSet 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.

ITwoDLocation Location used when working with 2D or 3D models
IUnitProvider An IUserUnitProvider is used by DiagnosticsValue to convert values into user units.
IValueGetterT A value getter can be called at any time to provide the actual value of the source.
IValueSetterT A value setter can be called at any time to set the value of the source. It will often just be wrapping DValueSetter
IVectorFractionGetterT A vector getter can be called at any time to provide the actual values of the sources.
IVectorGetterT A vector getter can be called at any time to provide the actual values of the sources.
IXYPair Defines data for a single row in a XY table.
IXYPairs 
IXYTable Table of corresponding x and y values.

If using one of the YFromX methods, the x values must be monotonic, and similar if using the XFromY, the y values must be monotonic.

NOTE: When this is used for a qh-relation, h is stored on x

IXYZLocationSpan A location span that is defined by a set of coordinates
IXYZTable Table of corresponding levels and widths.
IXYZTriple Defines data for a single row in a XY table.
IZLocation A location is a point in the network. A Location is always a part of the network, and identified by a branch/link id and a chainage, and a IZLocation furthermore has a Z coordinate
MathUtilIDataForSearching Helper interface for searching routinge GetInterval(Double, ListDouble, Double, Int32)
MathUtilIDataForSearchingT Helper interface for searching routinge GetInterval(Double, ListDouble, Double, Int32)
MathUtilIDataToInterpolate Helper interface for interpolation routine Interp(double, IDataToInterpolate, ExtrapolationTypes).

Delegates

ActionControlActivate Method signature for a control that "actives", as e.g. open, close, stop, start etc. It does not take any values
ActionControlSet Method signature for a control that takes one value, as e.g. setting a level or a discharge
ActionControlSet2 Method signature for a control that takes two values, typically setting a start-level and a stop-level.
DDateTimeGetter A DateTime getter. Used to access simulation time from external pumps, among others things
DiagnosticsGetAdditionaInformationDelegate Delegate type used to access additional information to add to items. Used to append time step information to items from HD.
DiagnosticsEvent The type of function called when a diagnostics event is encountered

Enumerations

ActionControlTypes Type of action for a given control
ComponentResultType Enumeration specifying AD or ST component result type.
ComponentType Type of component
CrossSectionInterpolationType Types of interpolation of cross sections
CrossSectionType the types of cross sections. Some are predefined geometries.
CrossSectionZone Zone types for cross sections.
DerivedQuantityType Type of derived quantities that is available.
DiagnosticsHandlerMessageType Type of diagnostics message
DiagnosticsLocationType Type of diagnostics location
DiagnosticsType Type of diagnostics levels
DiagnosticsValueDiagnosticsValueType Type of value stored in DiagnosticsValue
Direction 
ElementGeometry Type of elements
ExtrapolationTypes Extrapolation types. When data is outside the data set, this controls how extrapolation takes place This does not control the type of interpolation for internal values.

Not all interpolation/extrapolation routines support all the extrapolation types, especially the Sqrt is only implemented in certain places..

LocationRelativeType Type of relative location.
MorphologicalDivisionType Types of morphological division
NetworkReachEnd Enumeration specifying an end of the reach.
PreDefinedMarker Predefined markers for cross section points.
PredefinedQuantity Enumeration of predefined quantities.
PredefinedQuantityAD Enumeration of predefined quantities for AD components.
PredefinedQuantityST Enumeration of predefined quantities for ST components.
ProcessedDataStatus the state that the processed levels and values are in
ProcessingOption How levels should be determined when calculating processed data from raw data.
RadiusType formulation for radius
ReachSide Side of river.

Side of river is when walking in positive chainage direction.

ResistanceDepthDependence Resistence dependence on water level.
ResistanceDistribution transversal distribution of resistance values
ResistanceFormulation The resistance formulation to apply for resistance calculations.
ResistanceZoneApproachType Type of resistance zone approach.
StandardCrossSectionType Stand cross section types
TimeValueType Definition on how a value is defined at a certain time or within a certain time period/time step
TopExtensionType Type of extension of processed data.

The values ending with Flag are flags that can be combined with the other type values.

UnitSystem Unit systems available in the MIKE 1D system
UserUnitProviderUnitSearchType Type of string search to apply: