# mogi: Surface deformation from Mogi-type volume sources In abarbour/deform: Crustal deformation modeling tools in R

## Description

Modified from [1]: Computes radial and vertical displacements, ground tilt, and radial and tangential strain on the surface, at radial distances from the top of the source, due to a hydrostatic pressure inside a spherical cavity at some depth in a homogeneous elastic halfspace (center of dilatation). See Mogi (1958).

## Usage

 ```1 2 3 4 5 6 7 8``` ```mogi.volume(surface.distance, sphere.depth, Volume.change, ...) mogi.pressure(surface.distance, sphere.depth, sphere.radius, Pressure.change, shear.modulus, Youngs.modulus, nu = 1/4, ...) .mogi_check(surface.distance, sphere.depth, sphere.radius = NULL) .mogi_calc(src, surface.distance, sphere.depth, nu = 1/4, verbose = FALSE) ```

## Arguments

 `surface.distance` numeric; [m] the radial distance (positive away) from the center of the spherical cavity, projected onto the surface `sphere.depth` numeric; [m] depth of the center of the spherical cavity from the surface (positive downward) `Volume.change` numeric; [m^3] volumetric change of the spherical cavity (inflation positive) `...` additional parameters to `.mogi_calc` `sphere.radius` numeric; [m] radius of the spherical cavity that's inflating or deflating `Pressure.change` numeric; [Pa] hydrostatic pressure change in the spherical cavity (inflation positive) `shear.modulus` numeric; [Pa] elastic shear modulus of the surrounding material, also known as 'rigidity' or Lame”s constant `Youngs.modulus` numeric; [Pa] Young's modulus of elasticity of the surrounding material `nu` numeric; [0-1] Poisson's ratio of the surrounding material `src` numeric; the source strength `verbose` logical; should messages be given?

## Details

Strain is reckoned positive for extension. For insight into what a positive tilt is, see `Tilt`.

Units are shown next to the argument descriptions.

Typical moduli are in the range of 1-10 GPa for shear modulus, and 10-100 GPa for Young's modulus. Note that one gigapascal (GPa) is equal to 10^9 pascal (Pa).

## Author(s)

Original Matlab code 'mogi.m' written by Francois Beauducel; AJ Barbour ported to R code.

## References

Mogi, K. (1958), Relations between the eruptions of various volcanoes and the deformations of the ground surfaces around them, Bull. Earthquake Res. Inst. Univ. Tokyo, 36, 99-134. (http://hdl.handle.net/2261/11909)

`Uniaxial_extension` and `Tilt`
 ``` 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``` ```library(RColorBrewer) seq.palfun <- function(n) brewer.pal(n, 'Reds') div.palfun <- function(n) brewer.pal(n, 'Spectral') # http://www.ipgp.fr/~beaudu/images/mogi_example.png x <- y <- unique(sort(c(seq(-2,2,by=0.1), seq(-0.1,0.1,by=0.01)))) theta_r <- cart2pol(expand.grid(x, y)) r <- theta_r[,'Radius'] # calculate the deformation specifying a positive rate of volume-change (inflation) MV <- mogi.volume(r, 1, 1e-5, verbose=TRUE) filled.contour(x, y, matrix((MV[,'Ur']), length(x)), asp=1, main='Ur', nlevels = 11, color.palette=div.palfun) filled.contour(x, y, matrix((MV[,'Uz']), length(x)), asp=1, main='Uz', color.palette=div.palfun, levels=seq(0,2.5e-6, length.out = 11)) filled.contour(x, y, matrix((MV[,'Ett']), length(x)), levels=seq(0,2.5e-6,length.out=9), asp=1, main='Ett', color.palette=seq.palfun) filled.contour(x, y, matrix((MV[,'Err']), length(x)), zlim=3e-6*c(-1,1), asp=1, main='Err', nlevels = 11) # There should be a null in the center of the tilt field filled.contour(x, y, matrix((MV[,'Tilt']), length(x)), asp=1, main='Tilt', levels=seq(0,2.5e-6,length.out=9), color.palette=seq.palfun) # Calculate the undrained-to-drained effect: # first calculate for nu=1/3 MVud <- mogi.volume(r, 1, 1e-5, nu=1/3, verbose=TRUE) # then subtract the 1/4 result Resp.ud <- matrix((MV[,'Uz']), length(x)) - matrix((MVud[,'Uz']), length(x)) filled.contour(x, y, log10(Resp.ud), asp=1, main='Undrained response: Uz', color.palette=seq.palfun, levels=seq(-8,-6.5,length.out=9)) # #Using values comparable to the previous example, but specifying pressure changes MP <- mogi.pressure(r, 1, 0.01, 1e10, shear.modulus=3.08e9) MP2 <- mogi.pressure(r, 1, 0.01, 1e10, Youngs.modulus=10e9) ```