DOLFIN-X
DOLFIN-X C++ interface
PETScKrylovSolver.h
1 // Copyright (C) 2004-2015 Johan Jansson and Garth N. Wells
2 //
3 // This file is part of DOLFINX (https://www.fenicsproject.org)
4 //
5 // SPDX-License-Identifier: LGPL-3.0-or-later
6 
7 #pragma once
8 
9 #include <dolfinx/common/MPI.h>
10 #include <petscksp.h>
11 #include <petscmat.h>
12 #include <petscvec.h>
13 #include <string>
14 
15 namespace dolfinx
16 {
17 namespace fem
18 {
19 class PETScDMCollection;
20 }
21 
22 namespace la
23 {
24 
27 
29 {
30 public:
33  explicit PETScKrylovSolver(MPI_Comm comm);
34 
36  explicit PETScKrylovSolver(KSP ksp, bool inc_ref_count = true);
37 
39  virtual ~PETScKrylovSolver();
40 
42  void set_operator(const Mat A);
43 
45  void set_operators(const Mat A, const Mat P);
46 
49  int solve(Vec x, const Vec b, bool transpose = false);
50 
53  void set_options_prefix(std::string options_prefix);
54 
57  std::string get_options_prefix() const;
58 
60  void set_from_options() const;
61 
63  KSP ksp() const;
64 
66  void set_dm(DM dm);
67 
69  void set_dm_active(bool val);
70 
71 private:
72  // PETSc solver pointer
73  KSP _ksp;
74 };
75 } // namespace la
76 } // namespace dolfinx
dolfinx::la::PETScKrylovSolver::ksp
KSP ksp() const
Return PETSc KSP pointer.
Definition: PETScKrylovSolver.cpp:206
dolfinx::la::PETScKrylovSolver
This class implements Krylov methods for linear systems of the form Ax = b. It is a wrapper for the K...
Definition: PETScKrylovSolver.h:28
dolfinx::la::PETScKrylovSolver::get_options_prefix
std::string get_options_prefix() const
Returns the prefix used by PETSc when searching the PETSc options database.
Definition: PETScKrylovSolver.cpp:188
dolfinx::la::PETScKrylovSolver::~PETScKrylovSolver
virtual ~PETScKrylovSolver()
Destructor.
Definition: PETScKrylovSolver.cpp:41
dolfinx::la::PETScKrylovSolver::set_dm
void set_dm(DM dm)
Set the DM.
Definition: PETScKrylovSolver.cpp:164
dolfinx::la::PETScKrylovSolver::set_operators
void set_operators(const Mat A, const Mat P)
Set operator and preconditioner matrix (Mat)
Definition: PETScKrylovSolver.cpp:49
dolfinx::la::PETScKrylovSolver::set_operator
void set_operator(const Mat A)
Set operator (Mat)
Definition: PETScKrylovSolver.cpp:47
dolfinx::la::PETScKrylovSolver::set_options_prefix
void set_options_prefix(std::string options_prefix)
Sets the prefix used by PETSc when searching the PETSc options database.
Definition: PETScKrylovSolver.cpp:179
dolfinx::la::PETScKrylovSolver::set_dm_active
void set_dm_active(bool val)
Activate/deactivate DM.
Definition: PETScKrylovSolver.cpp:170
dolfinx::la::PETScKrylovSolver::PETScKrylovSolver
PETScKrylovSolver(MPI_Comm comm)
Create Krylov solver for a particular method and named preconditioner.
Definition: PETScKrylovSolver.cpp:20
dolfinx::la::PETScKrylovSolver::solve
int solve(Vec x, const Vec b, bool transpose=false)
Solve linear system Ax = b and return number of iterations (A^t x = b if transpose is true)
Definition: PETScKrylovSolver.cpp:59
dolfinx::la::PETScKrylovSolver::set_from_options
void set_from_options() const
Set options from PETSc options database.
Definition: PETScKrylovSolver.cpp:198