Get hydraulic head at location, accounting for the cumulative effect of wells at location, the aquifer type (confined or unconfined), resting head, and cumulative effect of all wells. This function is a wrapper around get_potential_differential() to get the actual hydraulic head instead of the differential potential.

get_hydraulic_head(loc, wells, aquifer)

Arguments

loc

coordinates vector as c(x,y), with units of [m] or as data.frame with columns $x and $y

wells

wells object with each row containing rate Q [m^3/s], diam [m], radius of influence R [m], & coordinates x [m], y [m]

aquifer

Afuifer object containing aquifer_type, h0, Ksat, bounds, z0 (for confined case only)

Value

The output is the hydraulic head loc, accounting for the cumulative effect of all wells (dP), which is given as hydraulic head [units=m] if aquifer_type="confined" or discharge potential [m^2] if aquifer_type="unconfined". Then the head at loc is:

aquifer_type="confined"

\(h=h_0+dP\)

aquifer_type="unconfined"

\(h=\sqrt{h_0^2+dP}\)

Examples

well1 <- define_wells(x=0,y=0,Q=1e-3,diam=0.75,R=300) well2 <- define_wells(x=0.5,y=0.25,Q=-2e-3,diam=0.8,R=300) aquifer <- define_aquifer(aquifer_type="confined",Ksat=0.00001,h0=0,z0=30) get_hydraulic_head(well1,loc=c(5,5),aquifer)
#> [1] 1.988254
get_hydraulic_head(well2,loc=c(5,5),aquifer)
#> [1] -4.058841
wells <- rbind(well1,well2) get_hydraulic_head(wells,loc=c(5,5),aquifer=aquifer)
#> [1] -2.070587
grid_pts <- expand.grid(x=seq(0,10,by=5),y=seq(0,10,by=5)) aquifer_unconfined <- define_aquifer(aquifer_type="confined",Ksat=0.00001,h0=50,z0=30) get_hydraulic_head(well1,loc=grid_pts,aquifer=aquifer_unconfined)
#> [1] 53.54630 52.17212 51.80439 52.17212 51.98825 51.74520 51.80439 51.74520 #> [9] 51.62053
get_hydraulic_head(well2,loc=grid_pts,aquifer=aquifer_unconfined)
#> [1] 43.33103 45.54561 46.33716 45.60719 45.94116 46.45517 46.36575 46.46680 #> [9] 46.71848
get_hydraulic_head(wells,loc=grid_pts,aquifer=aquifer_unconfined)
#> [1] 46.87732 47.71773 48.14155 47.77930 47.92941 48.20038 48.17014 48.21200 #> [9] 48.33901
get_hydraulic_head(NULL,loc=grid_pts,aquifer=aquifer_unconfined)
#> [1] 50 50 50 50 50 50 50 50 50
# Ensure potentials are even when pumping is symmetric (and opposite sign) well1 <- define_wells(x=0,y=0,Q=1e-3,diam=0.5,R=300) well2 <- define_wells(x=1,y=1,Q=-2e-3,diam=0.5,R=300) well3 <- define_wells(x=0,y=0.5,Q=2e-3,diam=0.5,R=300) well4 <- define_wells(x=0.5,y=1,Q=-2e-3,diam=0.5,R=300) wells_even <- rbind(well1,well1,well2,well3,well4) grid_pts_even <- data.frame(x=c(0,0.5,1),y=c(1,0.5,0)) get_hydraulic_head(wells_even,loc=grid_pts_even,aquifer=aquifer_unconfined)
#> [1] 50 50 50