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()

void pism::inverse::IP_SSAHardavForwardProblem::apply_linearization ( array::Scalar dzeta,
array::Vector du 
)
virtual

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

As described previously,

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

Applying 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]dzetaPerturbation of the design variable
[out]duComputed corresponding perturbation of the state variable; ghosts (if present) are updated.

Definition at line 558 of file IP_SSAHardavForwardProblem.cc.

References apply_jacobian_design(), assemble_jacobian_state(), pism::array::Array2D< T >::copy_from(), pism::RuntimeError::formatted(), 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(), and pism::array::Array::vec().