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 = 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

Definition

Namespace: DHI.Mike1D.Engine
Assembly: DHI.Mike1D.Engine (in DHI.Mike1D.Engine.dll) Version: 24.0.0.0 (11.1.1.1111)
C#
public class NodeMaxInflowReservoir : ISourcePoint, 
	IComponentSourcePoint, ISedimentSourcePoint
Inheritance
Object    NodeMaxInflowReservoir
Implements
IComponentSourcePoint, ISedimentSourcePoint, ISourcePoint

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.

Properties

ActualCatchmentInflow Actual catchment inflow to network for current time step. Limited by MaxInflowFromSurface and may also change due to CatcmentQRoutedToSurface
ActualInflow Actual total inflow to node for current time step
ActualSurfaceInflow Actual surface inflow to network for current time step, different from what was set in AddSurfaceContribution when max inflow limit is in effect
CatchmentInflow Catchment inflow to network for current time step
CatcmentQRoutedToSurface 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.
ComponentMassInReservoir Amount of component (mass) retained in reservoir
Implicit Flag specifying whether to do implicit source calculations
MaxInflowFromSurface Max inflow limit, handled from MaxInflowFromSurface, modify there to update here
MaxOutflowToSurface Max outflow limit, only applicable when coupled to a surface model. Default value is unlimited outflow (double.MaxValue)
WaterVolumeInReservoir Amount of water retained in reservoir [m3]

Methods

AddCohSourceContribution(Int32, Double) Add a volume contribution to the cohesive sediment for the specified component.
AddCohSourceContribution(Int32, Double, Double) Add a concentration contribution to the cohesive sediment for the specified component.
AddNonCohSourceContribution(Int32, Double) Add a volume contribution to the non-cohesive sediment for the specified component.
AddNonCohSourceContribution(Int32, Double, Double) Add a concentration contribution to the non-cohesive sediment for the specified component.
AddSourceContribution(Double) Add a contribution to the source.
AddSourceContribution(Int32, Double) Add a mass contribution to the AD source for the specified component.
AddSourceContribution(Int32, Double, Double) Add a concentration contribution to the source for the specified component.
AddSourcePerAreaContribution Add a contribution per area unit to the source.
AddSourcePerLengthContribution Add a contribution per length to the source.
AddSurfaceContribution(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)

AddSurfaceContribution(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)

CohOutflowConcentration The outflow concentration, i.e. concentration of flow out of the node.
EmptyReservoir Empty reservoir
EqualsDetermines whether the specified object is equal to the current object.
(Inherited from Object)
FinalizeAllows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object)
GetHashCodeServes as the default hash function.
(Inherited from Object)
GetTypeGets the Type of the current instance.
(Inherited from Object)
MemberwiseCloneCreates a shallow copy of the current Object.
(Inherited from Object)
NonCohOutflowConcentration The outflow concentration, i.e. concentration of flow out of the node.
OutflowConcentration The outflow concentration, i.e. concentration of flow out of the node.
SetSurfaceConcentration Set concentration of component for surface inflow.

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

ToStringReturns a string that represents the current object.
(Inherited from Object)

See Also