Inversions
Introduction
Inversions are used to constrain poorly known model parameters such as basal friction. The method consists of finding a set of model inputs that minimizes the cost function that measures the misfit between model and observations. For example, inverse methods are used to infer the basal friction
:
and/or the depth-averaged ice hardness, , in Glen’s flow law:
This section explains how to launch an inverse method and how optimization parameters must be tuned.
Cost functions
Absolute misfit
This is the classic way of calculating a misfit between a modeled and observed velocity field:
where:
- vx is the x component of the glacier modeled velocity
- vy is the y component of the glacier modeled velocity
- vxobs is the x component of the glacier observed velocity
- vyobs is the y component of the glacier observed velocity
Relative misfit
The relative misfit is defined as follows:
where:
is a minimum velocity used to avoid the observed velocity being equal to zero.
Logarithmic misfit
where:
- v is the glacier modeled velocity magnitude
- vobs is the glacier observed velocity magnitude
is a minimum velocity used to avoid the observed velocity being equal to zero
Thickness misfit
where:
- H is the ice thickness
- Hobs is the measured ice thickness
Drag gradient
where:
is a Tikhonov regularization parameter
Thickness gradient
where:
is a Tikhonov regularization parameter
Model parameters
The parameters relevant to the stress balance solution can be displayed by typing:
>> md.inversion
md.inversion.iscontrol
: 1 if inversion is activated, 0 for a forward run (default)md.inversion.incomplete_adjoint
: 1 linear viscosity, 0 non-linear viscositymd.inversion.control_parameters
: parameters that are inferred (ex:{'FrictionCoefficient'}
or{'MaterialsRheologyBbar'}
md.inversion.cost_functions
: list of individual cost functions that are summed to calculate the final cost functionto be minimized (ex:
[101, 501]
)md.inversion.cost_functions_coefficients
: weight of each individual cost function previously defined for each vertex (more/no weight can be put on certain regions)md.inversion.min_parameters
: minimum value for the inferred parametermd.inversion.max_parameters
: maximum value for the inferred parametermd.inversion.vx_obs
: x component of the surface velocitymd.inversion.vy_obs
: y component of the surface velocitymd.inversion.vel_obs
: surface velocity magnitudemd.inversion.thickness_obs
: measured ice thickness
Minimization algorithms
Depending on the class of md.inversion
, several optimization algorithm are available:
- Brent search algorithm (
md.inversion = inversion()
, the default) - Toolkit for Advanced Optimization (TAO) (
md.inversion = taoinversion()
) - M1QN3 algorithm (
md.inversion = m1qn3inversion()
) Each minimizer has its own optimization parameters described below.
Brent search minimizers
md.inversion.nsteps
: number of optimization searches (gradient evaluations)md.inversion.maxiter_per_step
: maximum iterations during each optimization stepmd.inversion.step_threshold
: decrease threshold for next step (default is 30%)md.inversion.gradient_scaling
: scaling factor on gradient direction during optimization, for each optimization step
Toolkit for Advanced Optimization (TAO)
ISSM has an interface to the Toolkit for Advanced Optimization (TAO) [Munson2012]. Here is a list of the relevant parameters:
md.inversion.maxsteps
: maximum number of iterations (gradient computation)md.inversion.maxiter
: maximum number of Function evaluation (forward run)md.inversion.algorithm
: inimization algorithm. ex:'tao_blmvm'
,'tao_cg'
,'tao_lmvm'
md.inversion.fatol
: cost function absolute convergence criterion (defined below)md.inversion.frtol
: cost function relative convergence criterion (defined below)md.inversion.gatol
: gradient absolute convergence criterion (defined below)md.inversion.grtol
: gradient relative convergence criterion (defined below)md.inversion.gttol
: gradient relative convergence criterion 2 (defined below) with the following convergence criteria:
where:
is the cost function at
is the cost function gradient with respect to
is the estimated “true” minimum
is the initial guess
M1QN3
ISSM has an interface to M1QN3 (Inria) [Gilbert1989]. This interface was largely based on [Nardi2009]. Here is a list of the relevant parameters:
md.inversion.maxsteps
: maximum number of iterations (gradient computation)md.inversion.maxiter
: maximum number of Function evaluation (forward run)md.inversion.dxmin
: convergence criterion: two points less than dxmin from each other (sup-norm) are considered identicalmd.inversion.gttol
: gradient relative convergence criterion 2 (defined below)
Running an inversion
To launch an inversion, run a stress balance solution with md.inversion.iscontrol = 1
:
>> md = solve(md, 'Stressbalance');