segall85: Surface deformation associated with fluid withdrawl

Description Usage Arguments See Also Examples

View source: R/segall85.R

Description

Surface deformation associated with fluid withdrawl

Usage

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
segall85(help = FALSE)

surface_displacement(x, C. = 1, mu. = 1e+09, ...)

.surface_g(x = 0, x_src = 0, z_src = 0, nuu. = 1/3)

timevarying_fluidmass(x, Time, Vdot., L., t., HD., phi.)

timevarying_surface_displacement(
  x,
  Time,
  Vdot.,
  B.,
  L.,
  D.,
  HD.,
  nuu. = 1/3,
  Pt.Sources.x = 0,
  x.lim
)

timevarying_porepressure(
  x,
  z,
  Time,
  Vdot.,
  B.,
  L.,
  D.,
  HD.,
  t.,
  mu.gpa.,
  nu. = 1/4,
  nuu. = 1/3,
  Pt.Sources.x = 0,
  x.lim
)

Arguments

help

logical; load documentation for segall85

x

numeric; spatial coordinate relative to extraction point

C.

numeric; units of force, proportional to source strength (e.g., extraction rate)

mu.

numeric; the shear modulus in Pascals

...

additional arguments passed to .surface_g

x_src

numeric; the horizontal distance from the source

z_src

numeric; the depth of the source below the surface

nuu.

numeric; the 'undrained' Poisson's ratio (typically 1/3)

Time

numeric; the time from xxx

Vdot.

numeric; the volumetric flow rate xxx

L.

numeric; the xxx

t.

numeric; the xxx

HD.

numeric; the xxx

phi.

numeric; the xxx

B.

numeric; the xxx

D.

numeric; the xxx

Pt.Sources.x

numeric; a vector of point-source locations in the x direction

x.lim

numeric; the limit of integration in both the positive and negative directions; if missing this is based on the absolute maximum of x

z

numeric; the observation depth

mu.gpa.

numeric; the shear modulus in giga-Pascals (GPa)

nu.

numeric; the drained Poisson's ratio (typically 1/4)

See Also

Simple-deformation

Examples

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
## Not run: 
x. <- c(-10:-2, seq(-1.9,1.9,by=0.1), 2:10)
su <- surface_displacement(x.*1e3, z_src=1e3)
plot(uz ~ x, su, type="b")

## Model the surface displacements for a source at 700m
#
.x. <- sort(unique(c(-7:-3, seq(-3.90,3.90,by=0.15), 3:7)))
su <- surface_displacement(.x.*1e3, C.=1e13, z_src=0.7e3)

## Calculate simple deformation quantities: surface tilt
# and uniaxial horizontal extension
#
sut <- with(su, Tilt(x, z=uz))
sue <- with(su, Uniaxial_extension(x, X=ux))

plot(uz ~ x, su, col=NA, ylim=c(-1,1)*20, xlim=c(-1,1)*7*1e3)
abline(v=0,h=0,col="grey")
lines(uz ~ x, su, type="l", pch=16, cex=1, lwd=2, col="grey")
text(2e3, -5, expression(U[Z]))
lines(ux ~ x, su, type="l", pch=16, col="blue", cex=1, lwd=2)
text(0, 6, expression(U[X]), col="blue", pos=2)
points(uxz.mag ~ x, su, col="red", pch=16, cex=0.6)
text(-3e3, 8, expression(abs(U[XZ])), col="red")
lines(ztilt*1e2 ~ x, sut, type="h", lwd=5, col="lightgreen")
text(-1.1e3, 2, expression("Tilt" == 2%*%dU[Z]/dx), col="dark green", pos=2)
lines(ztilt*1e2 ~ x, sut, lwd=3,col="dark green")
lines(dXdx*1e2 ~ x, sue, type="h", lwd=4, col="grey60")
text(5e2, 2, expression(E[ee] == dU[X]/dx), pos=4)
lines(dXdx*1e2 ~ x, sue, lwd=3)

## A more complicated example: multiple sources and Figs 7,8 from Segall (1985)
mxx <- 50
.x.km. <- sort(unique(c((-1*mxx):-3, seq(-2.90,2.90,by=0.1), 3:mxx)))
.z.km. <- sort(unique(c(seq(0,3,by=0.25),seq(3,12,by=0.75))))
yr <- 365*86400
.time. <- seq(2,10,by=2)*10*yr
.Vdot. <- 2e6/yr # volume rate m^3/yr to m^3/s
.D. <- 1e3 # depth of burial
.L. <- 10e3 # length (Vdot/L is the average rate of fluid extraction per unit length)
.B. <- 0.6 # Skemptons coeff
.c. <- 0.1 # hydraulic diffusivity m^2/s
.Sources.x. <- 1e3*c(0)
.TwoSources.x. <- 1e3*c(0,20)
# for mass computation
.t. <- 100 # thickness
.phi. <- 0.2 #porosity
# for pressure computation
.mu. <- 5.6 #GPa -- shear modulus

## Surface displacements
# perform the integration and make the figure:
# -- single source
zz1 <- timevarying_surface_displacement(.x.km.*1e3, .time., .Vdot., 
    .B., .L., .D., .c., 
    Pt.Sources.x=.Sources.x.)
matplot(.x.km., zz1*1e3, type="l", col="black", 
    main="Subsidence, mm, Segall 1985, Fig 8B", sub=Sys.time())

# -- dual sources
zz2 <- timevarying_surface_displacement(.x.km.*1e3, .time., c(1,0.5)*.Vdot., 
    .B., .L., .D., .c., 
    Pt.Sources.x=.TwoSources.x.)
matplot(.x.km., zz2*1e3, type="l", col="black", 
    main="Dual-source Subsidence, mm, Segall 1985, Fig 8B", sub=Sys.time())

# -- tilt history for multiple sources
zz2t <- apply(zz2, 2, function(.z.) matrix(Tilt(.x.km.*1e3, z=.z.)$ztilt))
matplot(.x.km., zz2t*1e6, type="l", col="black", main="Tilt")

## Fluid mass content history 
zz3 <- timevarying_fluidmass(.x.km.*1e3, .time., .Vdot., .L., .t., .c., phi.=.phi.)
matplot(.x.km., zz3*1e2, type="l", col="black", 
    main="t.v. Fluid mass change, Segall 1985, Fig 7B")

## Pore pressure changes (computationally expensive!)
zzp <- timevarying_porepressure(.x.km.*1e3, .z.km.*1e3, .time., .Vdot.*c(1,2), 
    .B., .L., .D., .c., .t., .mu., 
    Pt.Sources.x=.TwoSources.x.)
# result is an array of images with the 3rd dimension equal to length(.time.)

layout(matrix(1:6,nr=2, byrow=TRUE))
zl <- c(-10,-1)*1e3
IMF <- function(n){
 yrlbl <- paste("\nafter",.time.[n]/yr,"years")
 if (n==1){ yrlbl <- paste("Pore Pressure Perturbation", yrlbl) }
 image(.x.km.,.z.km.,zzp[,,n], zlim=zl, main=yrlbl)
 # Locations of the sources
 abline(v=.TwoSources.x./1e3, col="grey40", lwd=2)
 # and the depleting layer
 abline(h=(.D.+c(-1*.t.,.t.)/2)/1e3, col="grey40", lwd=2)
}
sapply(seq_along(.time.), IMF)
# hack colorbar
plot.new()
plot.window(xlim=c(-10,-1), ylim=c(0,1))
points(cbind(matrix(-10:-1),1), pch=22, cex=3.2, bg=heat.colors(length(-10:-1)))
text(-5.5, 0.95, "kPa", pos=1, font=2)
axis(3, at=-11:0)


## End(Not run)

abarbour/deform documentation built on Feb. 15, 2022, 6:24 p.m.