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');