Loading [MathJax]/extensions/tex2jax.js
PISM, A Parallel Ice Sheet Model 2.2.2-d6b3a29ca committed by Constantine Khrulev on 2025-03-28
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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
29namespace pism {
30namespace 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*/
41class IP_SSAHardavTaoTikhonovProblem: public IPTaoTikhonovProblem<IP_SSAHardavForwardProblem> {
42public:
43
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 .
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.