18#include "libmesh/preconditioner.h"
19#include "libmesh/linear_solver.h"
20#include "libmesh/coupling_matrix.h"
48 const unsigned int from_system,
49 const unsigned int from_var,
50 const NumericVector<Number> & from_vector,
51 const unsigned int to_system,
52 const unsigned int to_var,
53 NumericVector<Number> & to_vector);
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
Every object that can be built by the factory should be derived from this class.
Base class for MOOSE preconditioners.
FEProblemBase & _fe_problem
Subproblem this preconditioner is part of.
static void copyVarValues(MeshBase &mesh, const unsigned int from_system, const unsigned int from_var, const NumericVector< Number > &from_vector, const unsigned int to_system, const unsigned int to_var, NumericVector< Number > &to_vector)
Helper function for copying values associated with variables in vectors from two different systems.
void setCouplingMatrix(std::unique_ptr< libMesh::CouplingMatrix > cm)
Setup the coupling matrix on the finite element problem.
static InputParameters validParams()
virtual void initialSetup()
Perform some setup tasks such as storing the PETSc options.
const unsigned int _nl_sys_num
The nonlinear system number whose linearization this preconditioner should be applied to.
virtual ~MoosePreconditioner()=default
NonlinearSystemBase & _nl
The nonlinear system whose linearization this preconditioner should be applied to.
Nonlinear system to be solved.
Interface for objects interacting with the PerfGraph.
A class for creating restricted objects.
Set the preconditioner up.
The following methods are specializations for using the libMesh::Parallel::packed_range_* routines fo...