reservoirRouting: base function for reservoir simulation

View source: R/reservoirRouting.R

reservoirRoutingR Documentation

base function for reservoir simulation

Description

Given a sort of demand(s), reservoirRouting function simulates the effect of a dam under givn hydrometeorological time series, e.g. inflow and netEvaporation, on the drainage network.

Usage

  reservoirRouting(type='storage',
                   inflow,
                   netEvaporation=NA,
                   demand=NA,
                   priority=NA,
                   seepageFraction=NA,
                   geometry=list(storageAreaTable=NULL,
                                 storageElevationTable=NULL,
                                 dischargeElevationTable=NULL,
                                 deadStorage=0,
                                 capacity=NULL),
                   plant=list(installedCapacity=NULL,
                              efficiency=NULL,
                              designHead=NULL,
                              designFlow=NULL,
                              turbineAxisElevation=NULL,
                              submerged=FALSE,
                              loss=0),
                   penstock=list(diameter=NULL,
                                 length=0,
                                 roughness=110),
                   initialStorage=NA,
                   simulation)

Arguments

type

A string: the type of the reservoir being instantiated: by default 'storage', however, it can be 'hydropower'

inflow

A vector : a vector of water flowing into the diversion (MCM)

netEvaporation

A vector: is a vector of net evaporation depth time series at the location of dam site (meter). If omitted, the evaporation is assumed to be zero.

demand

A matrix: is column-wise matrix of demands, at which the rows presents demands for each monthly time steps and columns are for different individual demand sites (MCM).

priority

(optional) A vector: is a vector of priorities associated to demand

seepageFraction

(optional) The seepage coeffcient of reservoir storage. The seepage is computed as the product of seepageFraction and reservoir storage.

geometry

A list of reservoir geometric specifications:

  • storageAreaTable: is a matrix whose first column includes reservoir volume (MCM) for different elevation levels and the second column contains reservoir area (in Km^2) corresponding to the first column

  • storageElevationTable: is a matrix whose first column includes reservoir volume (MCM) for different elevation levels and the second column contains elevation (in meter) corresponding to the first column

  • dischargeElevationTable: is a matrix whose first column includes the capacity of reservoir tailwater discharge rate (in cms) for different elevation levels and the second column contains elevation levels corresponding to the first column, required if the type = 'hydropower' and the item submerged = TRUE

  • deadStorage: refers to water in a reservoir that cannot be drained by gravity through the dam outlet works (MCM)

  • capacity: The maximum capacity of the reservoir

plant

A list of power plant specifications. It is provided if type = 'hydropower':

  • efficiency: is a matrix whose first column includes discharge rate (in cms) and the second column turbine effeciency, in [0 1] interval, corresponding to the first column

  • designHead: A vector of length of two, containing the minimum and maximum design water head (in meter) of the turbine respecively, that the it is in active state

  • designFlow: A vector of length of two, containing the minimum and maximum design flow rate (in cms) of the turbine respecively, that the it is in active state

  • turbineAxisElevation: The elevation of axis of the installed turbine (in meter)

  • submerged: logical: if the turbine is of type of submeged on, TRUE, otherwise, FALSE

  • loss: losses associated with the turbine (in meter)

penstock

(optional) A list of penstock specifications. It is provided if type = 'hydropower'

  • diameter: The diameter of the penstock (in meter)

  • length: The length of the penstock (in meter)

  • roughness: pipe roughness coefficient used for Hazen-Williams formulation

initialStorage

(optional) The initial stored water at the reservoir in the first step of the simulation (MCM). If is missing the the function iterate to carry over the reservoir.

simulation

A list: simulation is a list of three vectors: start, end, and interval. the start and end components must be in 'YYYY-MM-DD' format. the interval component can takes either of 'day','week', or 'month'.

Value

the reservoirRouting function returns a list of features given as folows:

  • release: a matrix of release(s) equivalant to each demand (MCM)

  • spill : a vector of spilage time series (MCM)

  • seepage: a vector of steepage time series (MCM)

  • storage: a vector of storage time series (MCM)

  • loss : a vector of evaporation loss time series (MCM)

Author(s)

Rezgar Arabzadeh

References

Yeh, William WG. "Reservoir management and operations models: A state of the art review." Water resources research 21.12 (1985): 1797-1818.

See Also

aquiferRouting

Examples

    type           <-c('storage','hydropower')
    demand         <-matrix(rnorm(480,10,3),120)
    priority       <-sample(1:3,4,replace=TRUE)
    inflow         <-rlnorm(120,log(50),log(4))
    netEvaporation <-rnorm(120,0.4,0.1)
    simulation     <-list(start='2000-01-01',end='2009-12-29',interval='month')
    seepageFraction<-0.05
    geometry       <-list(storageAreaTable=cbind(seq(0,100,10),seq(0,10,1)),
                          storageElevationTable=cbind(seq(0,100,10),seq(0,200,20)),
                          dischargeElevationTable=cbind(seq(0,50,10),seq(0,10,2)),
                          deadStorage=50,
                          capacity=100)
    plant          <-list(installedCapacity=50,
                          efficiency=cbind(c(5,25,45),c(0.5,0.9,0.7)),
                          designHead=c(100,200),
                          designFlow=c(10,40),
                          turbineAxisElevation=5,
                          submerged=TRUE,
                          loss=2)
    penstock       <-list(diameter=2,
                          length=50,
                          roughness=110)
    
    #-----Storage Reservoir----------
    reservoirRouting(type=type[1],
                     inflow=inflow,
                     netEvaporation=netEvaporation,
                     demand=demand,
                     priority=priority,
                     seepageFraction=seepageFraction,
                     geometry=geometry,
                     plant=plant,
                     penstock=penstock,
                     simulation=simulation)
## Not run: 
    ##-----Takes Several Minutes----------

    #-----Hydropower Reservoir with demand----------
    reservoirRouting(type=type[2],
                     inflow=inflow,
                     netEvaporation=netEvaporation,
                     demand=demand,
                     priority=priority,
                     seepageFraction=seepageFraction,
                     geometry=geometry,
                     plant=plant,
                     penstock=penstock,
                     simulation=simulation)
    #-----Hydropower Reservoir----------
    reservoirRouting(type=type[2],
                     inflow=inflow,
                     netEvaporation=netEvaporation,
                     priority=priority,
                     seepageFraction=seepageFraction,
                     geometry=geometry,
                     plant=plant,
                     penstock=penstock,
                     simulation=simulation)
    
  
## End(Not run)
  

WRSS documentation built on May 30, 2022, 1:07 a.m.