Processing math: 100%
PISM, A Parallel Ice Sheet Model 2.2.1-cd005eec8 committed by Constantine Khrulev on 2025-03-07
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages

◆ apply_jacobian_design() [3/3]

void pism::inverse::IP_SSAHardavForwardProblem::apply_jacobian_design ( array::Vector u,
array::Scalar dzeta,
Vector2d **  du_a 
)
virtual

Applies the design Jacobian matrix to a perturbation of the design 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]dzetaPerturbation of the design variable. Prefers vectors with ghosts; will copy to a ghosted vector if needed.
[out]du_aComputed corresponding perturbation of the state variable. The array du_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 249 of file IP_SSAHardavForwardProblem.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::fem::DirichletData::constrain(), pism::array::Array2D< T >::copy_from(), pism::fem::Germ::dx, pism::fem::Germ::dy, pism::fem::DirichletData_Vector::enforce(), pism::fem::DirichletData_Scalar::enforce_homogeneous(), pism::fem::Element2::evaluate(), pism::ParallelSection::failed(), pism::fem::DirichletData_Vector::fix_residual_homogeneous(), pism::stressbalance::SSAStrengthExtension::get_min_thickness(), pism::k, pism::stressbalance::SSAFEM::m_bc_mask, pism::stressbalance::SSAFEM::m_bc_values, pism::stressbalance::SSAFEM::m_coefficients, m_design_param, pism::stressbalance::SSAFEM::m_dirichletScale, m_dzeta_local, m_element, m_element_index, m_fixed_design_locations, pism::stressbalance::ShallowStressBalance::m_flow_law, pism::Component::m_grid, 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::secondInvariant_2D(), pism::array::Array::stencil_width(), pism::stressbalance::SSA::strength_extension, pism::inverse::IPDesignVariableParameterization::toDesignVariable(), pism::Vector2d::u, pism::Vector2d::v, pism::fem::Element::weight(), pism::fem::ElementIterator::xm, pism::fem::ElementIterator::xs, pism::fem::ElementIterator::ym, and pism::fem::ElementIterator::ys.