PISM, A Parallel Ice Sheet Model
stable v2.1-1-g6902d5502 committed by Ed Bueler on 2023-12-20 08:38:27 -0800
|
Defines an IPTaoTikhonovProblem for inversion of basal yeild stresses \(\tau_c\) from SSA velocities. More...
#include <IP_SSATaucTaoTikhonovProblem.hh>
Public Member Functions | |
IP_SSATaucTaoTikhonovProblem (IP_SSATaucForwardProblem &forward, IP_SSATaucTaoTikhonovProblem::DesignVec &d0, IP_SSATaucTaoTikhonovProblem::StateVec &u_obs, double eta, IPFunctional< IP_SSATaucTaoTikhonovProblem::DesignVec > &designFunctional, IPFunctional< IP_SSATaucTaoTikhonovProblem::StateVec > &stateFunctional) | |
virtual | ~IP_SSATaucTaoTikhonovProblem () |
virtual void | connect (Tao tao) |
Callback from TaoBasicSolver, used to wire the connections between a Tao and. More... | |
virtual void | getVariableBounds (Tao tao, Vec lo, Vec hi) |
Callback to TAO to set bounds on \(\tau_c\) for constrained minimization algorithms. More... | |
Public Member Functions inherited from pism::inverse::IPTaoTikhonovProblem< IP_SSATaucForwardProblem > | |
IPTaoTikhonovProblem (IP_SSATaucForwardProblem &forward, DesignVec &d0, StateVec &u_obs, double eta, IPFunctional< DesignVec > &designFunctional, IPFunctional< StateVec > &stateFunctional) | |
virtual | ~IPTaoTikhonovProblem () |
virtual void | setInitialGuess (DesignVec &d) |
Sets the initial guess for minimization iterations. If this isn't set explicitly,. More... | |
virtual void | evaluateObjectiveAndGradient (Tao tao, Vec x, double *value, Vec gradient) |
Callback provided to TAO for objective evaluation. More... | |
virtual void | addListener (typename IPTaoTikhonovProblemListener< IP_SSATaucForwardProblem >::Ptr listener) |
Add an object to the list of objects to be called after each iteration. More... | |
virtual StateVecPtr | stateSolution () |
Final value of \(F(d)\), where \(d\) is the solution of the minimization. More... | |
virtual DesignVecPtr | designSolution () |
Value of \(d\), the solution of the minimization problem. More... | |
virtual void | monitorTao (Tao tao) |
Callback from TAO after each iteration. The call is forwarded to each element of our list of listeners. More... | |
virtual void | convergenceTest (Tao tao) |
Callback from TAO to detect convergence. Allows us to implement a custom convergence check. More... | |
virtual std::shared_ptr< TerminationReason > | formInitialGuess (Vec *v) |
Callback from TaoBasicSolver to form the starting iterate for the minimization. See also. More... | |
Additional Inherited Members | |
Public Types inherited from pism::inverse::IPTaoTikhonovProblem< IP_SSATaucForwardProblem > | |
typedef ForwardProblem::DesignVec | DesignVec |
typedef ForwardProblem::StateVec | StateVec |
typedef ForwardProblem::StateVec1 | StateVec1 |
typedef ForwardProblem::DesignVecGhosted | DesignVecGhosted |
typedef std::shared_ptr< typename ForwardProblem::DesignVecGhosted > | DesignVecGhostedPtr |
typedef std::shared_ptr< typename ForwardProblem::DesignVec > | DesignVecPtr |
typedef std::shared_ptr< typename ForwardProblem::StateVec > | StateVecPtr |
typedef std::shared_ptr< typename ForwardProblem::StateVec1 > | StateVec1Ptr |
Protected Attributes inherited from pism::inverse::IPTaoTikhonovProblem< IP_SSATaucForwardProblem > | |
std::shared_ptr< const Grid > | m_grid |
IP_SSATaucForwardProblem & | m_forward |
DesignVecGhostedPtr | m_d |
Current iterate of design parameter. More... | |
DesignVec | m_dGlobal |
Initial iterate of design parameter, stored without ghosts for the benefit of TAO. More... | |
DesignVec & | m_d0 |
A-priori estimate of design parameter. More... | |
DesignVecPtr | m_d_diff |
Storage for (m_d-m_d0) More... | |
StateVec & | m_u_obs |
State parameter to match via F(d)=u_obs. More... | |
StateVec1Ptr | m_u_diff |
Storage for F(d)-u_obs. More... | |
StateVec | m_adjointRHS |
Temporary storage used in gradient computation. More... | |
DesignVecPtr | m_grad_design |
Gradient of \(J_D\) at the current iterate. More... | |
DesignVecPtr | m_grad_state |
Gradient of \(J_S\) at the current iterate. More... | |
DesignVecPtr | m_grad |
double | m_eta |
Penalty parameter/Lagrange multiplier. More... | |
double | m_val_design |
Value of \(J_D\) at the current iterate. More... | |
double | m_val_state |
Value of \(J_S\) at the current iterate. More... | |
IPFunctional< array::Scalar > & | m_designFunctional |
Implementation of \(J_D\). More... | |
IPFunctional< array::Vector > & | m_stateFunctional |
Implementation of \(J_S\). More... | |
std::vector< typename IPTaoTikhonovProblemListener< IP_SSATaucForwardProblem >::Ptr > | m_listeners |
List of iteration callbacks. More... | |
double | m_tikhonov_atol |
Convergence parameter: convergence stops when \(||J_D||_2 <\) m_tikhonov_rtol. More... | |
double | m_tikhonov_rtol |
Defines an IPTaoTikhonovProblem for inversion of basal yeild stresses \(\tau_c\) from SSA velocities.
The forward problem for the inversion is defined by an IP_SSATaucForwardProblem. The problem itself is solved with a TaoBasicSolver as described by the class-level documentation for IPTaoTikhonovProblem. It is a reduced space method, inasmuch as we are performing unconstrained minimization on a Tikhonov functional that depends on a design variable (the value of \(\tau_c\)). It is compatible with any of the elementary TAO minimization algorithms, e.g. tao_cg, tao_lmvm. If the minimization algorithm tao_blmvm is selected, the values of \(\tau_c\) will be constrained by the config variables inverse.ssa.tauc_min and inverse.ssa.tauc_max.
The TAO algorithm tao_lcl is not compatible with IP_SSATaucTaoTikhonovProblem. Use IP_SSATaucTaoTikhonovProblemLCL instead.
Definition at line 43 of file IP_SSATaucTaoTikhonovProblem.hh.