2.0.0b10
catchment modelling framework
Loading...
Searching...
No Matches
Channel Class Reference

A wrapper for channel geometries. More...

+ Inheritance diagram for Channel:
+ Collaboration diagram for Channel:

Detailed Description

A wrapper for channel geometries.

Public Member Functions

 Channel (char typecode, double length, double width=1., double depth=0.25)
 Creates a reachtype using a short cut character.
 
 Channel (const Channel &for_copy)
 Copy constructable.
 
 Channel (const IChannel &for_wrapping)
 Wraps an existing channel geometry.
 
 Channel (double length)
 Creates a triangular reach of a length.
 
virtual double A (double V) const
 Returns the area of the surface for a given volume.
 
double get_channel_width (double depth) const
 Calculates the flow width from a given actual depth [m] using the actual IChannel geometry.
 
double get_depth (double area) const
 Calculates the actual depth of the reach using the IChannel geometry.
 
double get_flux_crossection (double depth) const
 Calculates the wetted area from a given depth using the IChannel geometry.
 
double get_length () const
 Length of the reach.
 
double get_wetted_perimeter (double depth) const
 Calculates the wetted perimeter from a given actual depth [m] using the actual IChannel geometry.
 
virtual double h (double V) const
 Returns the depth of a given volume.
 
Channeloperator= (const Channel &for_assignment)
 Assignable.
 
virtual double qManning (double A, double slope) const
 Calculates the flow rate from a given water volume in the reach.
 

Constructor & Destructor Documentation

◆ Channel()

Channel ( char typecode,
double length,
double width = 1.,
double depth = 0.25 )

Creates a reachtype using a short cut character.

Acceptes one of the following characters:

  • 'T' TriangularReach, width and depth are ignored.
  • 'R' RectangularReach, depth is ignored
  • 'P' PipeReach, depth is ignored, width is the diameter of the pipe
  • 'S' SWATReachType, a trapezoid flow cross section, as used in the SWAT model, width (bank width) and depth are used
    Parameters
    typecodeDescribes the geometry of the reach cross section.
    lengthThe length of the channel in m
    widthwidth of the reach cross section in m (ignored for typecode 'T')
    depthdepth of the reach (ignored for typecode 'T','R','P','S')

Member Function Documentation

◆ get_depth()

double get_depth ( double area) const
virtual

Calculates the actual depth of the reach using the IChannel geometry.

Returns
get_depth of the reach [m]
Parameters
areaWetted area of a river cross section [m2], can be obtained by V/l, where V is the stored volume and l is the reach length

Implements IChannel.

◆ get_flux_crossection()

double get_flux_crossection ( double depth) const
virtual

Calculates the wetted area from a given depth using the IChannel geometry.

In most cases use get_flux_crossection=V/l, where V is the stored volume and l is the reach length

Returns
Wetted area of a river cross section [m2]
Parameters
depthdepth of the reach [m]

Implements IChannel.

◆ qManning()

virtual double qManning ( double A,
double slope ) const
virtualinherited

Calculates the flow rate from a given water volume in the reach.

\begin{eqnarray*} q_{Manning}&=& A R^{\frac 2 3} \sqrt{\frac {\Delta_z} n} \\ A &=& \frac V l \mbox{, (Crosssectional area of the wetted crossection, Volume per length)} \\ R &=& \frac A {P(d)} \\ P(d) &=& \mbox{ the perimeter of the wetted crosssection, a function of reach depth} \\ d(V) &=& \mbox{ the depth of the reach a function of the volume} \\ \Delta_z &=& \frac{z_{max} - z_{min}}{l} \mbox{ Slope of the reach} \end{eqnarray*}

Returns
Flow rate [m3/s]
Parameters
AThe area of the cross section [m2]
slopeThe slope of the reach [m/m]