PISM, A Parallel Ice Sheet Model  stable v2.1-1-g6902d5502 committed by Ed Bueler on 2023-12-20 08:38:27 -0800

◆ apply_linearization_transpose()

void pism::inverse::IP_SSATaucForwardProblem::apply_linearization_transpose ( array::Vector du,
array::Scalar dzeta 
)
virtual

Applies the transpose of the linearization of the forward map (i.e. the transpose of the reduced gradient \(DF\) described in the class-level documentation.)

As described previously,

\[ Df = J_{\rm State}^{-1} J_{\rm Design}. \]

so

\[ Df^t = J_{\rm Design}^t \; (J_{\rm State}^t)^{-1} . \]

Applying the transpose of the linearization then involves the solution of a linear equation. The matrices \(J_{\rm State}\) and \(J_{\rm Design}\) both depend on the value of the design variable \(\zeta\) and the value of the corresponding state variable \(u=F(\zeta)\). These are established by first calling linearize_at.

Parameters
[in]duPerturbation of the state variable
[out]dzetaComputed corresponding perturbation of the design variable; ghosts (if present) are updated.

Definition at line 580 of file IP_SSATaucForwardProblem.cc.

References apply_jacobian_design_transpose(), pism::array::Array2D< T >::array(), assemble_jacobian_state(), pism::array::Array2D< T >::copy_from(), pism::fem::DirichletData_Vector::fix_residual_homogeneous(), pism::RuntimeError::formatted(), pism::stressbalance::SSAFEM::m_bc_mask, pism::stressbalance::SSAFEM::m_bc_values, pism::stressbalance::SSAFEM::m_dirichletScale, m_du_global, m_J_state, m_ksp, pism::Component::m_log, m_rebuild_J_state, pism::stressbalance::ShallowStressBalance::m_velocity, PISM_CHK, PISM_ERROR_LOCATION, pism::array::Array::scale(), pism::array::Array::stencil_width(), pism::array::Array::update_ghosts(), and pism::array::Array::vec().

Referenced by pism::inverse::IP_SSATaucTikhonovGNSolver::apply_GN(), pism::inverse::IP_SSATaucTikhonovGNSolver::assemble_GN_rhs(), and pism::inverse::IP_SSATaucTikhonovGNSolver::evaluate_objective_and_gradient().