Click or drag to resize

NodeMaxInflowReservoir Class

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

Inheritance Hierarchy
SystemObject
  DHI.Mike1D.EngineNodeMaxInflowReservoir

Namespace:  DHI.Mike1D.Engine
Assembly:  DHI.Mike1D.Engine (in DHI.Mike1D.Engine.dll) Version: 19.0.0.0 (11.1.1.1111)
Syntax
public class NodeMaxInflowReservoir : ISourcePoint, 
	IComponentSourcePoint, ISedimentSourcePoint

The NodeMaxInflowReservoir type exposes the following members.

Properties
  NameDescription
Public propertyActualCatchmentInflow
Actual catchment inflow to network for current time step. Limited by MaxInflowFromSurface and may also change due to CatcmentQRoutedToSurface
Public propertyActualInflow
Actual total inflow to node for current time step
Public propertyActualSurfaceInflow
Actual surface inflow to network for current time step, different from what was set in AddSurfaceContribution when max inflow limit is in effect
Public propertyCatchmentInflow
Catchment inflow to network for current time step
Public propertyCatcmentQRoutedToSurface
Catchment inflow routed to source (outflow). Is only positive when also Surface flow is negative (outflow from node), then some (or all) of the catchment flow is routed directly to surface.
Public propertyComponentMassInReservoir
Amount of component (mass) retained in reservoir
Public propertyImplicit
Flag specifying whether to do implicit source calculations
Public propertyMaxInflowFromSurface
Max inflow limit, handled from MaxInflowFromSurface, modify there to update here
Public propertyMaxOutflowToSurface
Max outflow limit, only applicable when coupled to a surface model. Default value is unlimited outflow (double.MaxValue)
Public propertyWaterVolumeInReservoir
Amount of water retained in reservoir [m3]
Top
Methods
  NameDescription
Public methodAddCohSourceContribution(Int32, Double)
Add a volume contribution to the cohesive sediment for the specified component.
Public methodAddCohSourceContribution(Int32, Double, Double)
Add a concentration contribution to the cohesive sediment for the specified component.
Public methodAddNonCohSourceContribution(Int32, Double)
Add a volume contribution to the non-cohesive sediment for the specified component.
Public methodAddNonCohSourceContribution(Int32, Double, Double)
Add a concentration contribution to the non-cohesive sediment for the specified component.
Public methodAddSourceContribution(Double)
Add a contribution to the source.
Public methodAddSourceContribution(Int32, Double)
Add a mass contribution to the AD source for the specified component.
Public methodAddSourceContribution(Int32, Double, Double)
Add a concentration contribution to the source for the specified component.
Public methodAddSourcePerAreaContribution
Add a contribution per area unit to the source.
Public methodAddSourcePerLengthContribution
Add a contribution per length to the source.
Public methodAddSurfaceContribution(Double)
Add a surface inflow contribution

Note that only one surface connection is supported, so this should not be called twice (the second call will override the first)

Public methodAddSurfaceContribution(Double, Double)
Add a surface inflow contribution as an implicit source

Note that only one surface connection is supported, so this should not be called twice (the second call will override the first)

Public methodCohOutflowConcentration
The outflow concentration, i.e. concentration of flow out of the node.
Public methodEmptyReservoir
Empty reservoir
Public methodEquals
Determines whether the specified object is equal to the current object.
(Inherited from Object.)
Protected methodFinalize
Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object.)
Public methodGetHashCode
Serves as the default hash function.
(Inherited from Object.)
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Protected methodMemberwiseClone
Creates a shallow copy of the current Object.
(Inherited from Object.)
Public methodNonCohOutflowConcentration
The outflow concentration, i.e. concentration of flow out of the node.
Public methodOutflowConcentration
The outflow concentration, i.e. concentration of flow out of the node.
Public methodSetSurfaceConcentration
Set concentration of component for surface inflow.

Only used if surface inflow is positive. When negative, water flows out with concentration in node.

Public methodToString
Returns a string that represents the current object.
(Inherited from Object.)
Top
Remarks
The following rules apply:
  • Water from surface has "higher" priority than water from catchment i.e. water from surface enters the node first, and then water from catchment if there is room within the max-inflow limit
  • Only one surface connection is supported, i.e. the surface methods AddSurfaceContribution(Double) and the AD counterparts can only be called once per timestep.
  • Water from surface, when limited, is not added to reservoir, assuming surface model has its own reservoir. So the user must keep track of what was actually added, by quering ActualSurfaceInflow
  • When inflow is limited, catchment inflow is retained in a reservoir.
  • Water from catchment and reservoir are mixing immediately
  • When coupled to a surface model, you can query the properties of the reservoir and empty it, EmptyReservoir, in order to transfer reservoir content to an external surface model.
  • If surface inflow is negative (outflow from node): inflow is first rerouted from CatchmentInflow (if any), and secondly from node.
  • AD contributions from surface must be concentrations.
See Also