20#ifndef PISM_SSAFD_SNES_H
21#define PISM_SSAFD_SNES_H
23#include "pism/stressbalance/ssa/SSAFDBase.hh"
25#include "pism/util/petscwrappers/SNES.hh"
26#include "pism/util/petscwrappers/DM.hh"
30namespace stressbalance {
std::shared_ptr< const Grid > grid() const
This class represents a 2D vector field (such as ice velocity) at a certain grid point.
std::shared_ptr< Wrapper > Ptr
CallbackData m_callback_data
const array::Vector & residual() const
DiagnosticList diagnostics_impl() const
void solve(const Inputs &inputs)
static PetscErrorCode jacobian_callback(DMDALocalInfo *info, Vector2d const *const *velocity, Mat A, Mat J, CallbackData *data)
static PetscErrorCode function_callback(DMDALocalInfo *info, Vector2d const *const *velocity, Vector2d **result, CallbackData *)
void compute_jacobian(const Inputs &inputs, Vector2d const *const *velocity, Mat J)
array::Vector m_residual
residual (diagnostic)
const array::Vector1 & velocity() const
Get the thickness-advective 2D velocity.
std::map< std::string, Diagnostic::Ptr > DiagnosticList