Inverse methods
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 viscosity
md.inversion.control_parameters
: parameters that is inferred (ex: {'FrictionCoefficient'}
or {'MaterialsRheologyBbar'}
md.inversion.cost_functions
: list of individual cost functions that are summed to calculate the final cost function to 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 parameter
md.inversion.max_parameters
: maximum value for the inferred parameter
md.inversion.vx_obs
: x component of the surface velocity
md.inversion.vy_obs
: y component of the surface velocity
md.inversion.vel_obs
: surface velocity magnitude
md.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 step
md.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 eachother (sup-norm) are considered identical
md.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');
References
-
Jean Charles Gilbert and Claude Lemarechal.
Some numerical experiments with variable-storage quasi-Newton
algorithms.
Math. Program., 45(1-3):407-435, 1989.
-
Todd Munson, Jason Sarich, Stefan Wild, Steven Benson, and Lois Curfman
McInnes.
TAO 2.0 Users Manual.
Technical Report ANL/MCS-TM-322, Mathematics and Computer Science
Division, Argonne National Laboratory, 2012.
http://www.mcs.anl.gov/tao.
-
Luigi Nardi, Charles Sorror, Fouad Badran, and Sylvie Thiria.
YAO: A Software for Variational Data Assimilation Using
Numerical Models.
In Osvaldo Gervasi, David Taniar, Beniamino Murgante, Antonio
Lagana, Youngsong Mun, and Marina L. Gavrilova, editors, LNCS 5593,
Computational Science and Its Applications - ICCSA 2009, pages 621-636.
Springer-Verlag, 2009.