PISM, A Parallel Ice Sheet Model  stable v2.1-1-g6902d5502 committed by Ed Bueler on 2023-12-20 08:38:27 -0800
Public Member Functions | List of all members
pism::inverse::IP_SSATaucTaoTikhonovProblem Class Reference

Defines an IPTaoTikhonovProblem for inversion of basal yeild stresses \(\tau_c\) from SSA velocities. More...

#include <IP_SSATaucTaoTikhonovProblem.hh>

+ Inheritance diagram for pism::inverse::IP_SSATaucTaoTikhonovProblem:

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< TerminationReasonformInitialGuess (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 Gridm_grid
 
IP_SSATaucForwardProblemm_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...
 
DesignVecm_d0
 A-priori estimate of design parameter. More...
 
DesignVecPtr m_d_diff
 Storage for (m_d-m_d0) More...
 
StateVecm_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
 

Detailed Description

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.


The documentation for this class was generated from the following files: