Ensemble Kalman Inversion

EnsembleKalmanProcesses.InversionType

An ensemble Kalman Inversion process.

struct Inversion{FT<:AbstractFloat, NorV<:Union{Nothing, AbstractVector}, NorAMorUS<:Union{Nothing, LinearAlgebra.UniformScaling, AbstractMatrix}} <: EnsembleKalmanProcesses.Process

Fields

  • prior_mean::Union{Nothing, AbstractVector}: Mean of Gaussian parameter prior in unconstrained space

  • prior_cov::Union{Nothing, LinearAlgebra.UniformScaling, AbstractMatrix}: Covariance of Gaussian parameter prior in unconstrained space

  • impose_prior::Bool: flag to explicitly impose the prior mean and covariance during updates

  • default_multiplicative_inflation::AbstractFloat: if prior is imposed, inflation is often required. This sets a default multiplicative inflation with s = default_multiplicative_inflation

Constructors

Inversion(
    prior_mean,
    prior_cov,
    impose_prior,
    default_multiplicative_inflation
)

defined at /home/runner/work/EnsembleKalmanProcesses.jl/EnsembleKalmanProcesses.jl/src/EnsembleKalmanInversion.jl:23.

Inversion(
    mean_prior,
    cov_prior;
    impose_prior,
    default_multiplicative_inflation
)

defined at /home/runner/work/EnsembleKalmanProcesses.jl/EnsembleKalmanProcesses.jl/src/EnsembleKalmanInversion.jl:68.

Inversion(
    prior;
    impose_prior,
    default_multiplicative_inflation
)

defined at /home/runner/work/EnsembleKalmanProcesses.jl/EnsembleKalmanProcesses.jl/src/EnsembleKalmanInversion.jl:79.

Inversion()

defined at /home/runner/work/EnsembleKalmanProcesses.jl/EnsembleKalmanProcesses.jl/src/EnsembleKalmanInversion.jl:95.

source
EnsembleKalmanProcesses.TransformInversionType

An ensemble transform Kalman inversion process.

struct TransformInversion{FT<:AbstractFloat, NorV<:Union{Nothing, AbstractVector}, NorAMorUS<:Union{Nothing, LinearAlgebra.UniformScaling, AbstractMatrix}} <: EnsembleKalmanProcesses.Process

Fields

  • prior_mean::Union{Nothing, AbstractVector}: Mean of Gaussian parameter prior in unconstrained space

  • prior_cov::Union{Nothing, LinearAlgebra.UniformScaling, AbstractMatrix}: Covariance of Gaussian parameter prior in unconstrained space

  • impose_prior::Bool: flag to explicitly impose the prior mean and covariance during updates

  • default_multiplicative_inflation::AbstractFloat: if prior is imposed, inflation is often required. This sets a default multiplicative inflation with s = default_multiplicative_inflation

  • buffer::AbstractVector: used to store matrices: buffer[1] = Y' *Γinv, buffer[2] = Y' * Γinv * Y

Constructors

TransformInversion(
    prior_mean,
    prior_cov,
    impose_prior,
    default_multiplicative_inflation,
    buffer
)

defined at /home/runner/work/EnsembleKalmanProcesses.jl/EnsembleKalmanProcesses.jl/src/EnsembleTransformKalmanInversion.jl:23.

TransformInversion(
    mean_prior,
    cov_prior;
    impose_prior,
    default_multiplicative_inflation
)

defined at /home/runner/work/EnsembleKalmanProcesses.jl/EnsembleKalmanProcesses.jl/src/EnsembleTransformKalmanInversion.jl:77.

TransformInversion(
    prior;
    impose_prior,
    default_multiplicative_inflation
)

defined at /home/runner/work/EnsembleKalmanProcesses.jl/EnsembleKalmanProcesses.jl/src/EnsembleTransformKalmanInversion.jl:88.

TransformInversion()

defined at /home/runner/work/EnsembleKalmanProcesses.jl/EnsembleKalmanProcesses.jl/src/EnsembleTransformKalmanInversion.jl:104.

source
EnsembleKalmanProcesses.GaussNewtonInversionType

A Gauss-Newton Kalman Inversion process.

struct GaussNewtonInversion{VV<:(AbstractVector), AMorUS<:Union{LinearAlgebra.UniformScaling, AbstractMatrix}} <: EnsembleKalmanProcesses.Process

Fields

  • prior_mean::AbstractVector: Mean of Gaussian parameter prior in unconstrained space

  • prior_cov::Union{LinearAlgebra.UniformScaling, AbstractMatrix}: Covariance of Gaussian parameter prior in unconstrained space

Constructors

GaussNewtonInversion(prior_mean, prior_cov)

defined at /home/runner/work/EnsembleKalmanProcesses.jl/EnsembleKalmanProcesses.jl/src/GaussNewtonKalmanInversion.jl:17.

GaussNewtonInversion(prior)

defined at /home/runner/work/EnsembleKalmanProcesses.jl/EnsembleKalmanProcesses.jl/src/GaussNewtonKalmanInversion.jl:30.

source
EnsembleKalmanProcesses.eki_updateFunction
eki_update(
    ekp::EnsembleKalmanProcess{FT<:Real, IT, II<:Inversion},
    u::AbstractArray{FT<:Real, 2},
    g::AbstractArray{FT<:Real, 2},
    y::AbstractArray{FT<:Real, 2},
    obs_noise_cov::Union{AbstractArray{CT<:Real, 2}, LinearAlgebra.UniformScaling{CT<:Real}},
    prior_mean::Union{Nothing, AbstractVector},
    prior_cov::Union{Nothing, AbstractMatrix}
) -> Any

Return the updated parameter vectors given their current values and the corresponding forward model evaluations, using the inversion algorithm from eqns. (4) and (5) of Schillings and Stuart (2017).

Localization is implemented following the ekp.localizer.

source