CatchmentKinematicWave Class

Class for Kinematic Wave catchment model. See ICatchmentKinematicWaveData for parameters availabel when setting up the model.

In Kinematic Wave model the runoff is computed as flow in an open channel, taking the gravitational and frition forces only. The runoff amount is controlled by the various hydrological losses and the size of the actually contributing area.

Definition

Namespace: DHI.Mike1D.RainfallRunoffModule
Assembly: DHI.Mike1D.RainfallRunoffModule (in DHI.Mike1D.RainfallRunoffModule.dll) Version: 24.0.0.0 (11.1.1.1111)
C#
public class CatchmentKinematicWave : CatchmentAbstractUrban, 
	ICatchmentKinematicWaveData, ICatchmentUrbanData, ICatchmentData, ICatchmentWithSurfaces, ICatchmentWithSurfacesRouting, 
	IModelStateReadWrite
Inheritance
Object    Catchment    CatchmentAbstractUrban    CatchmentKinematicWave
Implements
IModelStateReadWrite, ICatchmentData, ICatchmentKinematicWaveData, ICatchmentUrbanData, ICatchmentWithSurfaces, ICatchmentWithSurfacesRouting

Constructors

CatchmentKinematicWave Constructor for CatchmentKinematicWave class

Properties

AdditionalFlow Additional constant flow added to the total runoff Unit: [m3/s] Default: 0
(Inherited from Catchment)
ApplyEvaporationOnRain When raining, if true the evaporation is applied at the beginning of the time step, correcting the net rain (in wet periods).

If false, evaporation is applied at the end of the time step on non-empty storages in the catchment.

In dry periods, this is not used. if EvaporationFromTimeSeries is disabled, this is also not used (since the InitialLossRecoveryRate is only applied in dry periods).

Historically MIKE has set this to true and MIKE URBAN to false.

Area Total area of catchment Type: Catchment area Unit: [m2] Default: 1e8 (100 km2)
(Inherited from Catchment)
AreaInSquareKm Full area of catchment Type: Catchment area Unit: [km2] Default: 100
(Inherited from Catchment)
BoundarySourceEvaporation Evaporation boundary
(Inherited from CatchmentAbstractUrban)
BoundarySourceRainfall Rainfall boundary source
(Inherited from Catchment)
CatchmentGeometry Get and set the list of coordinates of the catchment

The sequence of coordinates can represent one or more polygons. It is interpreted as follows:

  • Polygons are stored in sequence.
  • A polygon is stored with the outer ring first, and any holes following immediately.
  • Any polygon ring (outer or inner) is represented as a string of coordinates, starting and ending with the same coordinate.
  • Any polygon that is clockwise is assumed to be an outer polygon.
  • Any polygon that is counter-clockwise is assumed to be a hole in the most recent outer polygon. A hole must be fully contained by the most recent outer polygon and not overlap other holes.


(Inherited from Catchment)
CatchmentName A overall data interface for cathcment data, containing data properties that are common for all catchments.

This interface contains data and parameters for setting up a catchment model, and represents as such only setup data. Computational variables and methods are not included in this interface. It can be used to explore data and parameters required when setting up the catchment model.


(Inherited from Catchment)
CenterPoint Get and set the central point of the catchment
(Inherited from Catchment)
CheckPoints A set of check points in time that must be hit by the catchments.
(Inherited from Catchment)
ClientName
(Inherited from Catchment)
CurrentTime Current time of catchment
(Inherited from Catchment)
EffectiveArea Effective area. The effective area is the area that collects water. Can be smaller than total area, eg for Linear Reservoir or when LIDs are present.
(Inherited from CatchmentAbstractUrban)
EffectiveTimeStep Time step used in the simulation, it may change. It is set initially in Prepare to TimeStep, and can be updated by individual catchment models when required, i.e. it may differ from TimeStep.
(Inherited from Catchment)
EndTime Return the end time of the catchment simulation. This is set during prepare, and the catchment must make sure not to run beyond this time.
(Inherited from Catchment)
EvaporationFromTimeSeries True if evaporation is enabled, and an evaporation boundary has been defined.

If set to false the initial recover rate is used during dry periods. Default: False


(Inherited from CatchmentAbstractUrban)
FixedLengthWidthRatio Flag indicating if the length-width ratio should be fixed.

When fixed, the length and width for each sub-catchment are calculated so that the length/width ratio for each sub-area is kept equal to the length/width ratio of the entire catchment.

When not set, the length of each subcatchment equals the length of the entire catchment, and width of each subcatchment is calculated as the area fraction of the width of the entire catchment.

This is only applicable when the catchment does not specify their length explicitly, see Length.

Default: true

GlobalDryDepthLimit Dry depth used for switching Horton's mode between dry and wet in Kinematic Wave model when InfiltrationAfterRain == true. In this case the switching to regeneration of infiltration capacity is controlled by a low limit of the water depth on the surface. Unit: [m] Default: 1e-6
(Inherited from CatchmentAbstractUrban)
InfiltrationAfterRain True if infiltration shall occur also after rain Default: True
(Inherited from CatchmentAbstractUrban)
InitialLossMax Maximum value of InitialLossStorageDepth Unit: [m]
(Inherited from CatchmentAbstractUrban)
InitialLossRecoveryRate Recovery rate for initial loss capacity. The initial loss capacity is regenerated in dry periods by a linear recovery rate.

Used as constant evaporation, when evaporation is not defined explicitly. If evaporation is defined explicitly (see EvaporationFromTimeSeries), this is neglected.

Unit: [m/s] Default: 0.00005 [m/hour] = 1.2 [mm/day]


(Inherited from CatchmentAbstractUrban)
InitialLossStorageDepth Storage loss depth. State variable. Unit: [m]
(Inherited from CatchmentAbstractUrban)
IntegratedHorton True if the Integrated Horton method is used in the calculation for infiltration. Default: False
Item Getter returning data that vary with each surface type.
Length The length of the channel.

The model assumes a prismatic flow channel with rectangular cross section. The channel bottom width is computed from catchment area and length.

This is only applicable when the catchment does not specify their length explicitly, see Length.

Default: 10 m Unit: [m]

LoadPerInhabitant Load per inhabitant. Unit: [-]
(Inherited from CatchmentAbstractUrban)
LowFlow Low flow limit for switching to dry period time step. The dry period time step will only be applied when the runoff from the rainfall is below the limit. Unit: [m3/s] Default: 0.0001
MaximumFlow Maximum runoff flow
(Inherited from Catchment)
MinimumFlow Minimum runoff flow
(Inherited from Catchment)
MinTime Minimum time the catchment should be able to provide values. The catchment will cache or recalculate values from MinTime to EndTime. MinTime must be updated ("dragged behind" time of calculation) from the caller to allow the catchment to discard cached values.
(Inherited from Catchment)
ModelId Catchment model ID. Unique id.
(Inherited from Catchment)
MonthlyStatistics Dictionary of statistics as a function of year and month
(Inherited from Catchment)
Name
(Inherited from Catchment)
Obsolete
ObservedData Observed data. Used for creating calibration plots and for auto-calibration reference data.
(Inherited from Catchment)
PeriodicStatistics Class for catchment periodic statistics
(Inherited from Catchment)
Persons Number of person equivalent in the catchment, used with catchment discharge source boundary
(Inherited from Catchment)
ReductionFactor Hydrological reduction coeeficient. The runoff reduction factor, accounts for water losses caused by e.g evapo-transpiration, imperfect imperviousness, etc. on the contributing area. Unit: [-]
(Inherited from CatchmentAbstractUrban)
Runoff Total runoff from catchment at present time step. Unit: [m^3/s]
(Inherited from Catchment)
RuntimeDiagnostics Get the Diagnostics instance for a Catchment. Used during runtime.
(Inherited from Catchment)
Slope Average slope of the catchment Default: 1 Unit: [-]
SnowMeltCoefficient Snow melt coefficient. Note: the snow melt coefficient is not in SI unit, because the temperature is assumed to be in degres Celcius. Unit: [m/degCelcius/s]
(Inherited from CatchmentAbstractUrban)
SnowStorage Snow storage at time N+1. Unit: [m]
(Inherited from CatchmentAbstractUrban)
StartTime Start time of catchment data - the earliest time for which the catchment can return data
(Inherited from Catchment)
Obsolete
StatisticsPreviousTimeStepWeight Weight of the previous time step when calculating statistics.
(Inherited from Catchment)
StatisticsPreviousTimeStepWeightRunoff Weight of the previous time step when calculating statistics for Runoff and AdditionalFlow.
(Inherited from Catchment)
StatisticsType Periodic statistics type for catchments
(Inherited from Catchment)
StormWaterLIDs List of Lids
(Inherited from Catchment)
SubCatchments Computational sub-catchments.

The number of computational sub-catchments may be different from the number in SubCatchmentsData. For example, all sub-catchments with zero area fraction are not included.

SubCatchmentsData List of sub-catchments.

In default Kinematic Wave model there are five different sub-catchments that are defined by a different surface type CatchmentKinematicWaveSurfaceType. When custom surfaces are used the number of sub-catchments is equal to number of custom surfaces.

Surfaces A list of catchment surfaces.
(Inherited from CatchmentAbstractUrban)
SurfacesData List of custom catchment surfaces.

If this list is empty the default surfaces are used.


(Inherited from CatchmentAbstractUrban)
SurfacesRouting Actual computational routing surfaces.
SurfacesRoutingData List of routing surfaces matching the SurfacesData
TimeOfMaximumFlow Time of minimum runoff flow
(Inherited from Catchment)
TimeOfMinimumFlow Time of maximum runoff flow
(Inherited from Catchment)
TimeStep Time step used by the catchment model
(Inherited from Catchment)
TimeStepDry Time step used during dry period Default: 12 hours
TimeStepDryPeriod Time step used during dry period Unit: [s] Default: 12 hours
Obsolete
TotalAdditionalInflowVolume Total volume of additional inflow
(Inherited from Catchment)
TotalLossVolume Total infiltration into this catchment (integrated over time)
(Inherited from Catchment)
TotalRainfallVolume Total rainfall on this catchment (integrated over time)
(Inherited from Catchment)
TotalRunoffVolume Total runoff from this catchment (integrated over time)
(Inherited from Catchment)
TSBuffer Set the TSBuffer to use in this catchment
(Inherited from Catchment)
UseHotStartFile Flag telling if initial conditions is taken from a hotstart file Default: false
(Inherited from Catchment)
UseLegacyLIDs Flag specifying whether to use legacy LID implementation.
(Inherited from Catchment)
UseSnowModule True if the snow module is activated. If True, a temperature time series has to be provided for the catchment.
(Inherited from CatchmentAbstractUrban)
VolumeOnGroundAdded Volume of water added to catchment after a time step. This water will be eventually routed.
(Inherited from Catchment)
YearlyStatistics Dictionary of statistics as a function of year
(Inherited from Catchment)

Methods

Accepts
(Inherited from Catchment)
AddToOffers
(Inherited from Catchment)
ApplyBoundary(ICatchmentSourceBoundary) Apply a boundary to this catchment
(Inherited from Catchment)
ApplyBoundary(CatchmentSourceBoundaryTypes, IBoundarySource) Apply a boundary to this catchment
(Inherited from CatchmentAbstractUrban)
ApplyBoundary(GlobalSourceBoundaryTypes, GlobalGeoLocatedSource) Apply a boundary to this catchment
(Inherited from CatchmentAbstractUrban)
ApplyBoundaryLIDs(GlobalGeoLocatedSource) Apply boundary to LID's in catchment
(Inherited from Catchment)
ApplyBoundaryLIDs(ICatchmentSourceBoundary) Apply boundary to LID's in catchment
(Inherited from Catchment)
ApplyBoundaryLIDs(CatchmentSourceBoundaryTypes, IBoundarySource) Apply boundary to LID's in catchment
(Inherited from Catchment)
ApplyBoundaryLIDs(GlobalSourceBoundaryTypes, GlobalGeoLocatedSource) Apply boundary to LID's in catchment
(Inherited from Catchment)
BoundaryTypeIsAdditive Return true if boundaries of the specified type are additive; the contributions of two discharge boundaries add up, while two temperature boundaries do not.
(Inherited from Catchment)
CalculateStatistics Calculate statistics on catchment.
(Inherited from CatchmentAbstractUrban)
CreateOffers Create offers, populating _offers and _offerDelegates
(Overrides CatchmentAbstractUrbanCreateOffers)
CreatePeriodicStat Creates and instance of statistics for a period.
(Inherited from Catchment)
EqualsDetermines whether the specified object is equal to the current object.
(Inherited from Object)
Finalize Destructor
(Inherited from Catchment)
FinalizeTimeStep Finalizes the time step for the catchment.
(Inherited from CatchmentAbstractUrban)
GetHashCodeServes as the default hash function.
(Inherited from Object)
GetPeriodicStat Get or create a RRYearlyStat object for the specified period.
(Inherited from Catchment)
GetRequiredTypes Get the type of boundary required by this catchment
(Inherited from CatchmentAbstractUrban)
GetSurfaceData Getter returning data that vary with each surface type.
GetTypeGets the Type of the current instance.
(Inherited from Object)
Initialize Initialize Rainfall Runoff model. Sets up static data.
(Overrides CatchmentInitialize(IDiagnostics))
InitializePlugins Initializes the cathcment plugins.
(Inherited from Catchment)
MemberwiseCloneCreates a shallow copy of the current Object.
(Inherited from Object)
Offers List of data types that is offered and can be used in GetValue
(Inherited from Catchment)
PerformTimeStep This procedure forwards the calculation with one time step.
(Inherited from Catchment)
Prepare Prepare Rainfall Runoff model. Sets up dynamic data so that the model is ready for first time step.
(Overrides CatchmentAbstractUrbanPrepare(DateTime, DateTime, RRParameters, IDiagnostics))
PrepareForTimeStep Prepares the catchment for the time step.
(Overrides CatchmentPrepareForTimeStep)
PreparePlugins Prepares the cathcment plugins.
(Inherited from Catchment)
PrepareSource Prepare boundary source.
(Inherited from Catchment)
PrepareState Prepare state, especially time
(Inherited from Catchment)
ReadBufferState Read current state of catchment value buffer
(Inherited from Catchment)
ReadPluginStates Read current state of plugins
(Inherited from Catchment)
ReadState Read state and apply to module. Returns true if state was successfully read.
Reset Reset the catchment and set the current time.
(Inherited from Catchment)
ResetBoundaries Remove boundaries applied in previous runs
(Inherited from Catchment)
StateUpdated When state has been updated, this method can be called to update derived/computational variables

The only update in the subcatchment that requires this to be called, is when the Runoff is updated.


(Overrides CatchmentStateUpdated)
TakeTimeStep This procedure is the one actually calculating the new time step.
(Inherited from Catchment)
TimeOffers List of data types that is offered and can be used in GetValue
(Inherited from Catchment)
TimeOfNextUpdate Return the time of next update. Used for PostTimeStepEvent event in Catchments. If a catchment uses variable timesteps, then this function must be overridden!!
(Inherited from Catchment)
Obsolete
TimeValueGetter Get value getter for the specified data quantity
(Inherited from Catchment)
ToStringReturns a string that represents the current object.
(Inherited from Catchment)
TransferStateToOld Transfer current state to state N. First thing to do when starting a timestep.
(Overrides CatchmentAbstractUrbanTransferStateToOld)
TriggerPostTimeStepEvent Trigger the PostTimeStepEvent, called at end of a time step.
(Inherited from Catchment)
Type The type of catchment: NAM, Urban A etc
(Overrides CatchmentType)
Update Update internal state of catchment to time Time()
(Inherited from Catchment)
UpdateCheckPointTime Updates check point time.
(Inherited from Catchment)
UpdateRouting Updates the routing for the catchment.
(Overrides CatchmentUpdateRouting)
UpdateRunoffMinMaxStatistics Update time and values of minimum/maximum flow.
(Inherited from Catchment)
UpdateStorage Updates the storage for the catchment.
(Overrides CatchmentUpdateStorage)
UpdateTime Update time, setting _timeNew to _timeOld + _effectiveTimeStep. This method will assue that _timeNew does not go beyond _endTime, by modifying _effectiveTimeStep. Before calling UpdateTime, be sure that _effectiveTimeStep is set.
(Inherited from Catchment)
UpdateTimeStepUsingCheckPoint Updates the present time if it is greater than the check point time.
(Inherited from Catchment)
Validate Validate that the catchment is set up correctly
(Overrides CatchmentValidate)
ValidateLIDs Validate all LIDs in catchment
(Inherited from Catchment)
ValueGetter Get value setter for the specified data quantity
(Inherited from Catchment)
ValueSetter
(Inherited from Catchment)
VolumeInCatchment Volume of water stored in catchment after previous time step.
(Overrides CatchmentVolumeInCatchment)
VolumeInCatchmentAtStart Volume of water stored in catchment after previous time step.
(Inherited from Catchment)
WriteBufferState Write current state of catchment value buffer
(Inherited from Catchment)
WritePluginStates Write current state of plugins
(Inherited from Catchment)
WriteState Write current state of module

Events

PostTimeStepEvent Event that is triggered every time the catchment has finished a new time step
(Inherited from Catchment)

Fields

_additionalFlow Additional constant flow added to the total runoff Unit: [m3/s] Default: 0
(Inherited from Catchment)
_additionalFlowOld Additional constant flow at start of time step
(Inherited from Catchment)
_applyEvaporationOnRain When raining, if true the evaporation is applied at the beginning of the time step, correcting the net rain (in wet periods).

If false, evaporation is applied at the end of the time step on non-empty storages in the catchment.

In dry periods, this is not used. if EvaporationFromTimeSeries is disabled, this is also not used (since the InitialLossRecoveryRate is only applied in dry periods).

Historically MIKE has set this to true and MIKE URBAN to false.

_area Total area of catchment. Type: Catchment area. Unit: [m2]. Default: 1e8 (100 km2).
(Inherited from Catchment)
_bInfiltrationAfterRain True if infiltration shall occur also after rain, used in Horton infiltration depth calculation from INI file Default: True
(Inherited from CatchmentAbstractUrban)
_boundarySourceEvaporation Evaporation boundary source
(Inherited from Catchment)
_boundarySourceRainfall Rainfall boundary source
(Inherited from Catchment)
_boundarySourceTemperature Temperature boundary source
(Inherited from Catchment)
_bSnowModule True if the snow module is activated.
(Inherited from CatchmentAbstractUrban)
_checkPointTime The most recent check point time.
(Inherited from Catchment)
_effectiveArea Effective area. The effective area is the area that collects water. Can be smaller than total area, eg for Linear Reservoir or when LIDs are present.
(Inherited from CatchmentAbstractUrban)
_effectiveTimeStep Time step used in the simulation, it may change. It is set in Prepare to _timeStep, and can be updated by individual catchment models when required, i.e. it may differ from _timeStep.
(Inherited from Catchment)
_endTime Return the end time of the catchment simulation. This is set during prepare, and the catchment must make sure not to run beyond this time.
(Inherited from Catchment)
_evaporationFromForcing Evaporation that must be applied during the calculation time step. unit: [m/s]
(Inherited from CatchmentAbstractUrban)
_evaporationFromTS True if evaporation is enabled, and an evaporation boundary has been defined.

If set to false the initial recover rate is used during dry periods. Default: False


(Inherited from CatchmentAbstractUrban)
_globalDepthDryLimit Global dry depth limit from INI file in Kinematic wave: used when InfiltrationAfterRain == true Default: 1e-6 Unit: [m]
(Inherited from CatchmentAbstractUrban)
_initialLossMax Maximum value of InitialLossStorageDepth Unit: [m] Default:
(Inherited from CatchmentAbstractUrban)
_initialLossRecoverRate Initial loss recover rate Unit: [m/s] Default: 5e-5 m/h = 1.2 mm/day
(Inherited from CatchmentAbstractUrban)
_maximumFlow Maximum flow
(Inherited from Catchment)
_minimumFlow Minimum flow
(Inherited from Catchment)
_minTime Proteced MinTime
(Inherited from Catchment)
_offerDelegates List of delegates, matching list of _offers
(Inherited from Catchment)
_offers List of datatypes offered in GetValue
(Inherited from Catchment)
_rainfallFromForcing Rainfall that must be applied during the calculation time step measured in m/s. unit: [m/s]
(Inherited from CatchmentAbstractUrban)
_redCoeff Hydrological reduction is the runoff reduction factor, accounts for water losses caused by e.g evapo-transpiration, imperfect imperviousness, etc. on the contributing area. Unit: [-] Default: 0.90
(Inherited from CatchmentAbstractUrban)
_runoff Total runoff from catchment at present time step. Unit: [m^3/s]
(Inherited from Catchment)
_runoffOld Runoff at time N. Unit: [m3/s]
(Inherited from CatchmentAbstractUrban)
_runtimeDiagnostics Diagnostics instance for a Catchment. Used during runtime.
(Inherited from Catchment)
_startTime Protected start time of catchment data - the earliest time for which the catchment can return data
(Inherited from Catchment)
_stormwaterLIDs List of Lids
(Inherited from Catchment)
_temperatureFromForcing Temperature that must be applied during the calculation time step. Note: the temperature is given in degrees Celsius, which is not SI unit! unit: [degCelcius]
(Inherited from CatchmentAbstractUrban)
_timeNew Variable holding information on the latest calculated time
(Inherited from Catchment)
_timeOfLastUpdate Last time the state of this catchment was updated (Update(DateTime) was called)
(Inherited from Catchment)
_timeOfMaximumFlow Time of maximum flow
(Inherited from Catchment)
_timeOfMinimumFlow Time of minimum flow
(Inherited from Catchment)
_timeOld Variable holding information on the latest calculated time
(Inherited from Catchment)
_timeStep Time step used in the simulation, or initial time step if the time step can change.
(Inherited from Catchment)
_totalAdditionalInflowVolume Total volume of additional inflow
(Inherited from Catchment)
_totalLossVolume Total volume of loss
(Inherited from Catchment)
_totalRainfallVolume Total volume of rain
(Inherited from Catchment)
_totalRunoffVolume Total volume of runoff
(Inherited from Catchment)
_tsBuffer TSBuffer to use when accessing time series objects Set in Catchments.Add(). If not set, then the inheritors must create a TSBuffer before using it.
(Inherited from Catchment)
_useHotStartFile Flag telling if initial conditions is taken from a hotstart file Default: false
(Inherited from Catchment)
_volumeOnGroundAdded Volume on ground added after UpdateStorage
(Inherited from Catchment)
_volumeOnGroundAfterRouting Volume on ground after routing
(Inherited from Catchment)
_volumeOnGroundBeforeRouting Volume on ground before routing
(Inherited from Catchment)
CatchmentPlugins List of catchment plugins
(Inherited from Catchment)
Use2016DryTimeStepAlgorithm Revert to dry-timestep algorithm from Release 2016
UseReverseDraining Revert to old draining order (Release 2016 and earlier). Set to true to drain in same order as in MOUSE engine.

Reverse draining drains in order: wetting, storage, depth. Hence, when storages are full, wetting and storage will be drained and not depth, depth will be higher and give more runoff. This is visible in low-flow conditions.


Obsolete
ValueBuffer
(Inherited from Catchment)

See Also