16 #ifndef dealii_petsc_solver_h
17 #define dealii_petsc_solver_h
22 #ifdef DEAL_II_WITH_PETSC
29 # include <petscksp.h>
31 # ifdef DEAL_II_WITH_SLEPC
39 # ifdef DEAL_II_WITH_SLEPC
43 class TransformationBase;
54 class PreconditionBase;
162 operator KSP()
const;
215 static PetscErrorCode
217 const PetscInt iteration,
218 const PetscReal residual_norm,
219 KSPConvergedReason *reason,
223 # ifdef DEAL_II_WITH_SLEPC
275 const MPI_Comm mpi_communicator,
327 const MPI_Comm mpi_communicator,
377 const MPI_Comm mpi_communicator,
428 const MPI_Comm mpi_communicator,
496 const MPI_Comm mpi_communicator,
548 const MPI_Comm mpi_communicator,
599 const MPI_Comm mpi_communicator,
650 const MPI_Comm mpi_communicator,
706 const MPI_Comm mpi_communicator,
756 const MPI_Comm mpi_communicator,
808 const MPI_Comm mpi_communicator,
864 const MPI_Comm mpi_communicator,
927 const MPI_Comm mpi_communicator,
SolverControl & control() const
void initialize(const PreconditionBase &preconditioner)
void perhaps_set_convergence_test() const
static PetscErrorCode convergence_test(KSP ksp, const PetscInt iteration, const PetscReal residual_norm, KSPConvergedReason *reason, void *solver_control)
SmartPointer< SolverControl, SolverBase > solver_control
void set_prefix(const std::string &prefix)
void initialize_ksp_with_comm(const MPI_Comm comm)
void solve(const MatrixBase &A, VectorBase &x, const VectorBase &b, const PreconditionBase &preconditioner)
virtual void set_solver_type(KSP &ksp) const
SolverBiCG(SolverControl &cn, const AdditionalData &data=AdditionalData())
const AdditionalData additional_data
virtual void set_solver_type(KSP &ksp) const override
virtual void set_solver_type(KSP &ksp) const override
const AdditionalData additional_data
SolverBicgstab(SolverControl &cn, const AdditionalData &data=AdditionalData())
const AdditionalData additional_data
virtual void set_solver_type(KSP &ksp) const override
SolverCGS(SolverControl &cn, const AdditionalData &data=AdditionalData())
const AdditionalData additional_data
SolverCG(SolverControl &cn, const AdditionalData &data=AdditionalData())
virtual void set_solver_type(KSP &ksp) const override
virtual void set_solver_type(KSP &ksp) const override
const AdditionalData additional_data
SolverCR(SolverControl &cn, const AdditionalData &data=AdditionalData())
const AdditionalData additional_data
virtual void set_solver_type(KSP &ksp) const override
SolverChebychev(SolverControl &cn, const AdditionalData &data=AdditionalData())
const AdditionalData additional_data
virtual void set_solver_type(KSP &ksp) const override
SolverGMRES(SolverControl &cn, const AdditionalData &data=AdditionalData())
virtual void set_solver_type(KSP &ksp) const override
SolverLSQR(SolverControl &cn, const AdditionalData &data=AdditionalData())
const AdditionalData additional_data
SolverPreOnly(SolverControl &cn, const AdditionalData &data=AdditionalData())
const AdditionalData additional_data
virtual void set_solver_type(KSP &ksp) const override
virtual void set_solver_type(KSP &ksp) const override
const AdditionalData additional_data
SolverRichardson(SolverControl &cn, const AdditionalData &data=AdditionalData())
const AdditionalData additional_data
virtual void set_solver_type(KSP &ksp) const override
SolverTCQMR(SolverControl &cn, const AdditionalData &data=AdditionalData())
const AdditionalData additional_data
virtual void set_solver_type(KSP &ksp) const override
SolverTFQMR(SolverControl &cn, const AdditionalData &data=AdditionalData())
void solve(const MatrixBase &A, VectorBase &x, const VectorBase &b)
virtual void set_solver_type(KSP &ksp) const override
const AdditionalData additional_data
void set_symmetric_mode(const bool flag)
SparseDirectMUMPS(SolverControl &cn, const AdditionalData &data=AdditionalData())
#define DEAL_II_DEPRECATED
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
SymmetricTensor< 2, dim, Number > b(const Tensor< 2, dim, Number > &F)
AdditionalData(const unsigned int restart_parameter=30, const bool right_preconditioning=false)
bool right_preconditioning
unsigned int restart_parameter
AdditionalData(const double omega=1)