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

◆ apply_jacobian_design_transpose() [2/3]

void pism::inverse::IP_SSATaucForwardProblem::apply_jacobian_design_transpose ( array::Vector u,
array::Vector du,
double **  dzeta_a 
)
virtual

Applies the transpose of the design Jacobian matrix to a perturbation of the state variable.

The matrix depends on the current value of the design variable \(\zeta\) and the current value of the state variable \(u\). The specification of \(\zeta\) is done earlier with set_design or linearize_at. The value of \(u\) is specified explicitly as an argument to this method.

Parameters
[in]uCurrent state variable value.
[in]duPerturbation of the state variable. Prefers vectors with ghosts; will copy to a ghosted vector if need be.
[out]dzeta_aComputed corresponding perturbation of the design variable. The array dzeta_a should be extracted first from a Vec or an array::Array.

Typically this method is called via one of its overloads.

Definition at line 388 of file IP_SSATaucForwardProblem.cc.

References pism::array::Array2D< T >::add(), pism::fem::Element2::add_contribution(), pism::array::Array2D< T >::array(), pism::ParallelSection::check(), pism::fem::Element::chi(), pism::array::Array2D< T >::copy_from(), pism::IceBasalResistancePlasticLaw::drag(), pism::fem::DirichletData_Vector::enforce(), pism::fem::DirichletData_Vector::enforce_homogeneous(), pism::fem::Element2::evaluate(), pism::ParallelSection::failed(), pism::fem::DirichletData_Scalar::fix_residual_homogeneous(), pism::mask::grounded_ice(), pism::k, pism::stressbalance::ShallowStressBalance::m_basal_sliding_law, pism::stressbalance::SSAFEM::m_bc_mask, pism::stressbalance::SSAFEM::m_bc_values, pism::stressbalance::SSAFEM::m_coefficients, pism::stressbalance::SSAFEM::m_dirichletScale, m_du_local, m_element, m_element_index, m_fixed_tauc_locations, pism::Component::m_grid, m_tauc_param, m_zeta, pism::fem::MAX_QUADRATURE_SIZE, pism::fem::q1::n_chi, pism::fem::Element::n_pts(), pism::fem::Element2::nodal_values(), pism::stressbalance::SSAFEM::quad_point_values(), pism::fem::Element2::reset(), pism::array::Array::stencil_width(), pism::inverse::IPDesignVariableParameterization::toDesignVariable(), pism::Vector2d::u, pism::Vector2d::v, pism::fem::Germ::val, pism::fem::Element::weight(), pism::fem::ElementIterator::xm, pism::fem::ElementIterator::xs, pism::fem::ElementIterator::ym, and pism::fem::ElementIterator::ys.