Options
All
  • Public
  • Public/Protected
  • All
Menu

Allow to do slip inversion using multiple type of dataset. This is still a work in progress (optimization, new dataset, ...)

This is almost based on


Maerten, F., Resor, P., Pollard, D., & Maerten, L. (2005). Inverting for slip on three-dimensional fault surfaces using angular dislocations. Bulletin of the Seismological Society of America, 95(5), 1654-1665.


except that we use an iterative approach to solve for the unknown burger components on fault surfaces. Consequently, the regularization operator (aka, Tikhonov regularization) is also simply incorporated into the iterative process. The FNNLS (Fast Non Negativity Least Squares) algorithm is simply replaced by the notion of DIC (Displacement Inequality Constraint).

The iterative approach is similar to the Block Gauss-Seidel solver (Forward with 'seidel' parameter), except that we use a Block Least-Squares formulation, with an optimized building process for the underlaying matrices and vectors.

todo

Separate the notion of data (gps, insar, ...) from the solver itself.

example
const model = new arch.Model()
// --> add surface discontinuities
// --> setup surface boundary conditions and values
// --> add DICs on surfaces eventually

const insar = [0,0,0, 1,0,0, 2,1,0, 3,2, 0 ...] // point position
const dataInsar = [0.12, 0,21, 0,22, 0.65 ...] // insar data, one per point
// The same applies for Gps

const inv = new arch.SlipInversion
inv.addInsar(insar, dataInsar, satLOS, 1)
inv.addGps(gps, dataGps, [true,true,true], 3) // gps is 3x more important than insar
inv.setSmooth(0.85)
const burgers = inv.run(true, true)

Another example

const model = new arch.Model()
model.setHalfSpace(false)
model.setMaterial( 0.25, 1, 1000 )

const surface = loadSurfaceFromSomewhere(s_filename)
surface.setBC("dip" , "free", 0)
surface.setBC("strike", "free", 0)
surface.setBC("normal", "locked", 0)
model.addSurface(surface)

const gps = loadGpsFromSomewhere(g_filename)

const slipinv = new arch.SlipInversion(model)
slipinv.addGps(pos, gps, [true, true, true], 1)
const burgers = slipinv.run(true, true)

// For each surface
burgers.forEach( burgersForSurface => {
console.log( burgersForSurface )
})

Hierarchy

  • SlipInversion

Index

Constructors

Methods

  • brief

    Add a new Gps dataset to constrain the slip inversion

    Parameters

    • position: FlatVectors

      The position of the data points in 3D. The size of the vector should equal to the number of points time three.

    • gps: Vectord
    • valid: Vectorb

      The validity of each axis

    • weight: number

      The weight of this dataset

    Returns any

  • brief

    Add a new InSAR dataset to constrain the slip inversion.

    warning

    Be careful that the InSAR dataset is not tested yet

    Parameters

    • position: FlatVectors

      The position of the data poinrs in 3D

    • insar: Vectord

      The data, one for each point

    • satellite: Vector

      The line of sight of the satellite

    • weight: number

      The weight of this dataset

    Returns any

  • run(local: boolean, atTriangles: boolean): Vectord[]
  • brief

    Run the slip inversion based on (i) the provided model and (ii) the dataset as constraints.

    Parameters

    • local: boolean
    • atTriangles: boolean

    Returns Vectord[]

    An array of Vectord, each entry of the array represents the inverted displ of a surface.

  • setEps(e: number): any
  • brief

    The precision of the solver

    default

    1e-8

    Parameters

    • e: number

    Returns any

  • setMaxIter(m: number): any
  • brief

    The maximum number of iteration for the solver

    default

    200

    Parameters

    • m: number

    Returns any

  • setSmooth(s: number): any
  • brief

    The smoothing parameter for Thikonov. This correspond to the link between a triangle and its neighbors. The burger vector for a considered triangle will be dependent on its neighbors (smoothness), and the greater the value, the more smooth (more dependent on neighbors).

    For a given computed displacement u on triangle t, its smoothed value according to the n neighbors f with displacement uf will be: u = (1. - smooth)u + smooth/n*sum(uf)

    warning

    The definition of this parameter is not the same as in Poly3Dinv For instance, here a practical value is aound 0.9, whereas for Poly3Dinv, it is close to 0.1.

    default

    0.9

    Parameters

    • s: number

    Returns any