Define recharge as undisturbed water table gradients. Note that recharge acts as if the aquifer boundaries did not exist. Therefore, when parameterizing recharge, care must be taken to ensure only plausible scenarios.

define_recharge(recharge_params, recharge_type, recharge_vector, aquifer,
  ...)

Arguments

recharge_params

A list containing any of the named or unnamed (i.e, in ...) input parameters. If any named arguments are missing, they will be replaced by items in this list.

recharge_type

Type of recharge gradient. One of "F" (uniform flow), "H" (head boundaries), or "D" (recharge divide)

recharge_vector

A numeric vector containing c(x1, y1, x2, y2)

aquifer

Aquifer containing aquifer_type, Ksat, and if necessary h0 and z0

...

See details for required and optional parameters

Value

The function returns a list containing the elements described in Details. The parameters x_term and y_term specify the flow direction, and their calculation depends on aquifer_type as follows:

"confined"

\(x_term, y_term ~ - Q / (Ksat z0)\). They are equivalent to dh/dx and dh/dy. Head differential in the x-direction with respect to some x = x0, h = h0 is therefore \(h - h0 = (x-x0) x_term\). Flow per unit length in the x-direction is \(Qx/L = -x_term Ksat z0\). They are defined as:

  • x_term: -flow * cos(theta) * sign(dx) / (Ksat * z0)

  • y_term: -flow * sin(theta) * sign(dy) / (Ksat * z0)

where sin(theta) * sign(dx) is the component of recharge_vector in the x direction.

"unconfined"

\(x_term, y_term ~ - 2 Q / Ksat\). They are equivalent to dh^2/dx and dh^2/dy. Change in discharge potential in the x-direction with respect to some x = x0, h = h0 is therefore \(h^2- h0^2 = (x-x0) x_term\). They are defined as:

  • x_term: -2 * flow * cos(theta) * sign(dx) / Ksat

  • y_term: -2 * flow * sin(theta) * sign(dy) / Ksat

where sin(theta) * sign(dx) is the component of recharge_vector in the x direction.

Details

This function defines recharge to the aquifer by defining the undisturbed water table profile. In addition to the named parameters, each recharge_type has additional parameters that must be specified as named arguments in recharge_params or ...:

Constant flow, "F"

This allows a uniform constant flow in the direction of the recharge_vector. Flow is specified as cumec/m, where the length dimension in the denominator is perpendicular to the recharge vector. This recharge_type requires parameters:

  • x0, y0: Coordinate locations where undisturbed head is equal to aquifer$h0

  • flow: Flow in cumec, per m (perpendicular to the flow vector)

The function returns a list of named parameters including:
  • All of the input parameters

  • scenario: A string combining "c" or "u" for aquifer type, and the recharge type

  • x_term, y_term: flow direction. See Value for details.

Recharge divide, "D"

This allows a uniform constant flow in opposite directions on both sides of a divide. The divide goes through the recharge_vector origin x1, y1 and is perpendicular to the recharge_vector. Flow on either side is specified as cumec/m, where the length dimension in the denominator is parallel to the to the recharge divide. This recharge_type requires parameters:

  • x0, y0: Coordinate locations where undisturbed head is equal to aquifer$h0

  • flow_main: Flow in cumec in the direction of the recharge_vector, per m.

  • flow_opp: Flow in cumec the opposite direction of the recharge_vector, per m. Positive value means flow away from divide.

The function returns a list of named parameters including:
  • All of the input parameters

  • scenario: A string combining "c" or "u" for aquifer type, and the recharge type

  • h0_divide: Hydraulic head at the divide

  • divide_m, divide_b: Slope and aspect of dividing line

  • main_side_x, main_side_y: Direction (+1 or -1) of flow_main relative to divide

  • x_term_main, y_term_main: x_term and y_term for main direction of flow. See Value for details.

  • x_term_opp, y_term_opp: x_term and y_term for opposite direction of flow. See Value for details.

Potential future implementation

Head boundaries, "H"

This is not yet implemented. It would allow the head profile to be specified by 2 or 3 points, where the result is steady uniform flow determined by the hydraulic gradient between head at the recharge_vector origin and head at the other 1 (or 2) point(s). Note that aquifer$h0 is ignored with this option. This recharge_type requires parameters:

  • h1: Hydraulic head at x1, y1

  • h2: Hydraulic head at x2, y2

  • x3, y3, h3: Optional coordinate location x3, y3 and hydraulic head h3 at a third point. If this is specified, there will be a watershed divide

Examples

aquifer <- define_aquifer("confined",Ksat=0.001,z0=10,h0=100) recharge_params <- list(recharge_type="F", recharge_vector=c(0,0,3,3),flow=1,x0=3,y0=3) define_recharge(recharge_params,aquifer=aquifer)
#> recharge_type x1 y1 x2 y2 flow x0 y0 scenario x_term y_term #> 1 F 0 0 3 3 1 3 3 cF -70.71068 -70.71068
recharge_params <- list(recharge_type="F",recharge_vector=c(0,0,3,3), aquifer=aquifer,flow=1,x0=3,y0=3) define_recharge(recharge_params)
#> recharge_type x1 y1 x2 y2 flow x0 y0 scenario x_term y_term #> 1 F 0 0 3 3 1 3 3 cF -70.71068 -70.71068
aquifer <- define_aquifer("unconfined",Ksat=0.001,h0=100) recharge_params <- list(recharge_type="F",recharge_vector=c(0,0,3,3), flow=1,x0=3,y0=3) define_recharge(recharge_params, aquifer=aquifer)
#> recharge_type x1 y1 x2 y2 flow x0 y0 scenario x_term y_term #> 1 F 0 0 3 3 1 3 3 cF -1414.214 -1414.214
aquifer <- define_aquifer("confined",Ksat=1,z0=10,h0=0) recharge_params <- list(recharge_type="D",recharge_vector=c(0,0,1,1), aquifer=aquifer,flow_main=1,flow_opp=1,x0=1,y0=1) define_recharge(recharge_params)
#> recharge_type x1 y1 x2 y2 flow_main flow_opp x0 y0 scenario h0_divide #> 1 D 0 0 1 1 1 1 1 1 cF 0.1414214 #> divide_m divide_b main_side_x main_side_y x_term_main y_term_main x_term_opp #> 1 -1 0 1 1 -0.07071068 -0.07071068 0.07071068 #> y_term_opp #> 1 0.07071068