Note: this is documentation for an old release. View the latest documentation at docs.fenicsproject.org/v0.1.0/v0.9.0/cpp
DOLFINx  0.1.0
DOLFINx 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::fem
16 {
17 class PETScDMCollection;
18 }
19 
20 namespace dolfinx::la
21 {
22 
25 
27 {
28 public:
31  explicit PETScKrylovSolver(MPI_Comm comm);
32 
36  PETScKrylovSolver(KSP ksp, bool inc_ref_count);
37 
38  // Copy constructor (deleted)
39  PETScKrylovSolver(const PETScKrylovSolver& solver) = delete;
40 
43 
46 
47  // Assignment operator (deleted)
48  PETScKrylovSolver& operator=(const PETScKrylovSolver&) = delete;
49 
51  PETScKrylovSolver& operator=(PETScKrylovSolver&& solver);
52 
54  void set_operator(const Mat A);
55 
57  void set_operators(const Mat A, const Mat P);
58 
61  int solve(Vec x, const Vec b, bool transpose = false) const;
62 
65  void set_options_prefix(std::string options_prefix);
66 
69  std::string get_options_prefix() const;
70 
72  void set_from_options() const;
73 
75  KSP ksp() const;
76 
78  void set_dm(DM dm);
79 
81  void set_dm_active(bool val);
82 
83 private:
84  // PETSc solver pointer
85  KSP _ksp;
86 };
87 } // namespace dolfinx::la
dolfinx::la::PETScKrylovSolver::ksp
KSP ksp() const
Return PETSc KSP pointer.
Definition: PETScKrylovSolver.cpp:216
dolfinx::la
Linear algebra interface.
Definition: sparsitybuild.h:14
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:26
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:198
dolfinx::la::PETScKrylovSolver::~PETScKrylovSolver
~PETScKrylovSolver()
Destructor.
Definition: PETScKrylovSolver.cpp:45
dolfinx::la::PETScKrylovSolver::set_dm
void set_dm(DM dm)
Set the DM.
Definition: PETScKrylovSolver.cpp:174
dolfinx::la::PETScKrylovSolver::set_operators
void set_operators(const Mat A, const Mat P)
Set operator and preconditioner matrix (Mat)
Definition: PETScKrylovSolver.cpp:59
dolfinx::la::PETScKrylovSolver::set_operator
void set_operator(const Mat A)
Set operator (Mat)
Definition: PETScKrylovSolver.cpp:57
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:189
dolfinx::la::PETScKrylovSolver::solve
int solve(Vec x, const Vec b, bool transpose=false) const
Solve linear system Ax = b and return number of iterations (A^t x = b if transpose is true)
Definition: PETScKrylovSolver.cpp:69
dolfinx::fem
Finite element method functionality.
Definition: assemble_matrix_impl.h:22
dolfinx::la::PETScKrylovSolver::set_dm_active
void set_dm_active(bool val)
Activate/deactivate DM.
Definition: PETScKrylovSolver.cpp:180
dolfinx::la::PETScKrylovSolver::PETScKrylovSolver
PETScKrylovSolver(MPI_Comm comm)
Create Krylov solver for a particular method and named preconditioner.
Definition: PETScKrylovSolver.cpp:18
dolfinx::la::PETScKrylovSolver::set_from_options
void set_from_options() const
Set options from PETSc options database.
Definition: PETScKrylovSolver.cpp:208