PISM, A Parallel Ice Sheet Model  stable v2.1-1-g6902d5502 committed by Ed Bueler on 2023-12-20 08:38:27 -0800
IP_SSAHardavTaoTikhonovProblem.hh
Go to the documentation of this file.
1 // Copyright (C) 2013, 2014, 2015, 2016, 2023 David Maxwell and Constantine Khroulev
2 //
3 // This file is part of PISM.
4 //
5 // PISM is free software; you can redistribute it and/or modify it under the
6 // terms of the GNU General Public License as published by the Free Software
7 // Foundation; either version 3 of the License, or (at your option) any later
8 // version.
9 //
10 // PISM is distributed in the hope that it will be useful, but WITHOUT ANY
11 // WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
12 // FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
13 // details.
14 //
15 // You should have received a copy of the GNU General Public License
16 // along with PISM; if not, write to the Free Software
17 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18 
19 
20 #ifndef IP_SSAHARDAVTAOTIKHONOVPROBLEM_HH_HB8UWICX
21 #define IP_SSAHARDAVTAOTIKHONOVPROBLEM_HH_HB8UWICX
22 
23 #include "pism/inverse/IPTaoTikhonovProblem.hh"
24 #include "pism/inverse/IP_SSAHardavForwardProblem.hh"
25 
26 #include "pism/inverse/TaoUtil.hh"
27 #include "pism/inverse/functional/IPFunctional.hh"
28 
29 namespace pism {
30 namespace inverse {
31 
32 //! Defines an IPTaoTikhonovProblem for inversion of basal yeild stresses \f$\tau_c\f$ from %SSA velocities.
33 /*! The forward problem for the inversion is defined by an IP_SSAHardavForwardProblem. The problem itself
34  is solved with a TaoBasicSolver as described by the class-level documentation for IPTaoTikhonovProblem. It
35  is a reduced space method, inasmuch as we are performing unconstrained minimization on a Tikhonov functional
36  that depends on a design variable (the value of \f$\tau_c\f$). It is compatible with any of the elementary
37  TAO minimization algorithms, e.g. tao_cg, tao_lmvm. If the minimization algorithm tao_blmvm is selected,
38  the values of \f$\tau_c\f$ will be constrained by the config variables \a inverse.ssa.hardav_min
39  and \a inverse.ssa.hardav_max.
40 */
41 class IP_SSAHardavTaoTikhonovProblem: public IPTaoTikhonovProblem<IP_SSAHardavForwardProblem> {
42 public:
43 
46  IP_SSAHardavTaoTikhonovProblem::StateVec &u_obs, double eta,
49  IPTaoTikhonovProblem<IP_SSAHardavForwardProblem>(forward,d0,u_obs,eta,designFunctional,stateFunctional) {};
50 
52 
53  virtual void connect(Tao tao);
54 
55  //! Callback to TAO to set bounds on \f$\tau_c\f$ for constrained minimization algorithms.
56  virtual void getVariableBounds(Tao tao, Vec lo, Vec hi);
57 
58 };
59 
60 } // end of namespace inverse
61 } // end of namespace pism
62 
63 #endif /* end of include guard: IP_SSAHARDAVTIKHONOVPROBLEM_HH_HB8UWICX */
Abstract base class for functions from ice model vectors to .
Definition: IPFunctional.hh:41
Defines a Tikhonov minimization problem to be solved with a TaoBasicSolver.
Implements the forward problem of the map taking to the corresponding solution of the SSA.
virtual void connect(Tao tao)
Callback from TaoBasicSolver, used to wire the connections between a Tao and.
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 void getVariableBounds(Tao tao, Vec lo, Vec hi)
Callback to TAO to set bounds on for constrained minimization algorithms.
Defines an IPTaoTikhonovProblem for inversion of basal yeild stresses from SSA velocities.