|
PISM, A Parallel Ice Sheet Model 2.2.2-d6b3a29ca committed by Constantine Khrulev on 2025-03-28
|
Defines an IPTaoTikhonovProblem for inversion of basal yeild stresses \(\tau_c\) from SSA velocities. More...
#include <IP_SSAHardavTaoTikhonovProblem.hh>
Inheritance diagram for pism::inverse::IP_SSAHardavTaoTikhonovProblem:Public Member Functions | |
| IP_SSAHardavTaoTikhonovProblem (IP_SSAHardavForwardProblem &forward, IP_SSAHardavTaoTikhonovProblem::DesignVec &d0, IP_SSAHardavTaoTikhonovProblem::StateVec &u_obs, double eta, IPFunctional< IP_SSAHardavTaoTikhonovProblem::DesignVec > &designFunctional, IPFunctional< IP_SSAHardavTaoTikhonovProblem::StateVec > &stateFunctional) | |
| virtual | ~IP_SSAHardavTaoTikhonovProblem () |
| virtual void | connect (Tao tao) |
| Callback from TaoBasicSolver, used to wire the connections between a Tao and. | |
| virtual void | getVariableBounds (Tao tao, Vec lo, Vec hi) |
| Callback to TAO to set bounds on \(\tau_c\) for constrained minimization algorithms. | |
Public Member Functions inherited from pism::inverse::IPTaoTikhonovProblem< IP_SSAHardavForwardProblem > | |
| IPTaoTikhonovProblem (IP_SSAHardavForwardProblem &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,. | |
| virtual void | evaluateObjectiveAndGradient (Tao tao, Vec x, double *value, Vec gradient) |
| Callback provided to TAO for objective evaluation. | |
| virtual void | addListener (typename IPTaoTikhonovProblemListener< IP_SSAHardavForwardProblem >::Ptr listener) |
| Add an object to the list of objects to be called after each iteration. | |
| virtual StateVecPtr | stateSolution () |
| Final value of \(F(d)\), where \(d\) is the solution of the minimization. | |
| virtual DesignVecPtr | designSolution () |
| Value of \(d\), the solution of the minimization problem. | |
| virtual void | monitorTao (Tao tao) |
| Callback from TAO after each iteration. The call is forwarded to each element of our list of listeners. | |
| virtual void | convergenceTest (Tao tao) |
| Callback from TAO to detect convergence. Allows us to implement a custom convergence check. | |
| virtual std::shared_ptr< TerminationReason > | formInitialGuess (Vec *v) |
| Callback from TaoBasicSolver to form the starting iterate for the minimization. See also. | |
Additional Inherited Members | |
Public Types inherited from pism::inverse::IPTaoTikhonovProblem< IP_SSAHardavForwardProblem > | |
| 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_SSAHardavForwardProblem > | |
| std::shared_ptr< const Grid > | m_grid |
| IP_SSAHardavForwardProblem & | m_forward |
| DesignVecGhostedPtr | m_d |
| Current iterate of design parameter. | |
| DesignVec | m_dGlobal |
| Initial iterate of design parameter, stored without ghosts for the benefit of TAO. | |
| DesignVec & | m_d0 |
| A-priori estimate of design parameter. | |
| DesignVecPtr | m_d_diff |
| Storage for (m_d-m_d0) | |
| StateVec & | m_u_obs |
| State parameter to match via F(d)=u_obs. | |
| StateVec1Ptr | m_u_diff |
| Storage for F(d)-u_obs. | |
| StateVec | m_adjointRHS |
| Temporary storage used in gradient computation. | |
| DesignVecPtr | m_grad_design |
| Gradient of \(J_D\) at the current iterate. | |
| DesignVecPtr | m_grad_state |
| Gradient of \(J_S\) at the current iterate. | |
| DesignVecPtr | m_grad |
| double | m_eta |
| Penalty parameter/Lagrange multiplier. | |
| double | m_val_design |
| Value of \(J_D\) at the current iterate. | |
| double | m_val_state |
| Value of \(J_S\) at the current iterate. | |
| IPFunctional< array::Scalar > & | m_designFunctional |
| Implementation of \(J_D\). | |
| IPFunctional< array::Vector > & | m_stateFunctional |
| Implementation of \(J_S\). | |
| std::vector< typename IPTaoTikhonovProblemListener< IP_SSAHardavForwardProblem >::Ptr > | m_listeners |
| List of iteration callbacks. | |
| double | m_tikhonov_atol |
| Convergence parameter: convergence stops when \(||J_D||_2 <\) m_tikhonov_rtol. | |
| 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_SSAHardavForwardProblem. 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.hardav_min and inverse.ssa.hardav_max.
Definition at line 41 of file IP_SSAHardavTaoTikhonovProblem.hh.