20#ifndef LIBMESH_PETSC_PRECONDITIONER_H
21#define LIBMESH_PETSC_PRECONDITIONER_H
23#include "libmesh/libmesh_config.h"
25#ifdef LIBMESH_HAVE_PETSC
28#include "libmesh/preconditioner.h"
29#include "libmesh/libmesh_common.h"
30#include "libmesh/reference_counted_object.h"
31#include "libmesh/libmesh.h"
32#include "libmesh/petsc_macro.h"
33#include "libmesh/wrapped_petsc.h"
34#include "libmesh/system.h"
43template <
typename T>
class SparseMatrix;
44template <
typename T>
class NumericVector;
45template <
typename T>
class ShellMatrix;
70 virtual void clear ()
override;
72 virtual void init ()
override;
88#ifdef LIBMESH_HAVE_PETSC_HYPRE
void ErrorVector unsigned int
Provides a uniform interface to vector storage schemes for different linear algebra libraries.
This class provides an interface to the suite of preconditioners available from PETSc.
virtual void apply(const NumericVector< T > &x, NumericVector< T > &y) override
Computes the preconditioned vector y based on input vector x.
virtual ~PetscPreconditioner()=default
virtual void clear() override
Release all memory and clear data structures.
static void set_petsc_aux_data(PC &pc, System &sys, const unsigned v=0)
Builds PETSc auxiliary data needed by preconditioners such as hypre ams/ads.
static void set_hypre_ams_data(PC &pc, System &sys, const unsigned v)
static void set_petsc_preconditioner_type(const PreconditionerType &preconditioner_type, PC &pc)
Tells PETSc to use the user-specified preconditioner.
Mat _mat
PETSc Mat pulled out of the _matrix object during init().
static void set_hypre_ads_data(PC &pc, System &sys, const unsigned v)
WrappedPetsc< PC > _pc
Preconditioner context.
static void set_petsc_aux_data(PC &, System &, const unsigned=0)
virtual void init() override
Initialize data structures if not done so already.
This class provides a uniform interface for preconditioners.
Manages consistently variables, degrees of freedom, and coefficient vectors.
The libMesh namespace provides an interface to certain functionality in the library.
PreconditionerType
Defines an enum for preconditioner types.