Path: blob/devel/elmerice/Solvers/Documentation/AdjointSSA_CostTaubSolver.md
3206 views
AdjointSSA : Basal drag regularisation solver {#ssa_Taub_cost}
Module name: AdjointSSA_CostTaubSolver.F90 Module subroutines: AdjointSSA_CostTaubSolver Module authors: Fabien Gillet-Chaulet (IGE-Grenoble) Document authors: Fabien Gillet-Chaulet Document edited: 28/04/2020
Required input variables:
Variable solution of the direct problem (SSA solver) (SSAVelocity [hard coded])
output variables:
Velocityb [hard coded derivative with respect to the ssavelocity]
DJDBEta [derivative with respect to the frcition parameter]
CostValue [computed cost (can be a global variable)]
Introduction
Instead of penalising the first spatial derivatives of the friction parameter using the Adjoint_CostReg Solver, this solver penalises the spatial derivatives of the basal drag . is computed at the nodes from the parameters prescribed for the SSA solver.
The cost function then writes:
If the friction is set to 0 automatically in the SSA solver using the keyword Sub-Element GL parameterization = logical True, as computed here will be erroneous. If there is floating elements, you should skip the evaluation of this cost function in the floating elements using the keywords related to passive elements, as, by definition, in floating elements.
As this cost function depends on the solution of the SSA, it has to be run before the adjoint of the linear system.
The sequence in the .sif will usually be as follow:
Compute the velocity using the SSA solver
Compute a cost function that measures the difference between the model velocities and some observation
Compute the regularisation term for
Compute the solution of the adjoint linear system
Compute the gradient of your cost functions with respect to your input parameters (SSA Gradient Solver)
Limitations and possible improvements
Evaluation of do not check if the element is floating; see above.
Similarly to the regularisation solver, a cost function that measures the difference between an a prior estimate could be implemented.
Keywords
Solver section
Material properties
By default the output for DJDBeta is the derivative with respect to the SSA Friction Parameter prescribed in the material properties. If a change of variable is used, you can directly provide the derivative here:
e.g.
Or using ElmerIce built-in user functions:
Body Force section
You can use keywords related to passive elements if you want to skip the evaluation of the cost function for some elements, for example in floating elements.
By default the name of the solver variable is [Equation_name]_var.
Tests and Examples
See examples for the SSA inverse methods