DOLFIN-X
DOLFIN-X C++ interface
PETScOperator.h
1 // Copyright (C) 2005-2018 Anders Logg 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 <array>
10 #include <cinttypes>
11 #include <cstddef>
12 #include <petscmat.h>
13 #include <string>
14 
15 namespace dolfinx::la
16 {
17 class PETScVector;
18 
21 
23 {
24 public:
26  PETScOperator(Mat A, bool inc_ref_count);
27 
28  // Copy constructor (deleted)
29  PETScOperator(const PETScOperator& A) = delete;
30 
32  PETScOperator(PETScOperator&& A) noexcept;
33 
35  virtual ~PETScOperator();
36 
38  PETScOperator& operator=(const PETScOperator& A) = delete;
39 
42 
45  std::array<std::int64_t, 2> size() const;
46 
52  PETScVector create_vector(std::size_t dim) const;
53 
55  Mat mat() const;
56 
57 protected:
58  // PETSc Mat pointer
59  Mat _matA;
60 };
61 } // namespace dolfinx::la
dolfinx::la::PETScOperator::mat
Mat mat() const
Return PETSc Mat pointer.
Definition: PETScOperator.cpp:85
dolfinx::la::PETScOperator::create_vector
PETScVector create_vector(std::size_t dim) const
Initialize vector to be compatible with the matrix-vector product y = Ax. In the parallel case,...
Definition: PETScOperator.cpp:57
dolfinx::la::PETScOperator::~PETScOperator
virtual ~PETScOperator()
Destructor.
Definition: PETScOperator.cpp:30
dolfinx::la
Linear algebra interface.
Definition: DiscreteOperators.h:19
dolfinx::la::PETScVector
It is a simple wrapper for a PETSc vector pointer (Vec). Its main purpose is to assist memory managem...
Definition: PETScVector.h:31
dolfinx::la::PETScOperator::operator=
PETScOperator & operator=(const PETScOperator &A)=delete
Assignment operator (deleted)
dolfinx::la::PETScOperator::size
std::array< std::int64_t, 2 > size() const
Return number of rows and columns (num_rows, num_cols). PETSc returns -1 if size has not been set.
Definition: PETScOperator.cpp:47
dolfinx::la::PETScOperator::PETScOperator
PETScOperator(Mat A, bool inc_ref_count)
Constructor.
Definition: PETScOperator.cpp:17
dolfinx::la::PETScOperator
This class is a base class for matrices that can be used in PETScKrylovSolver.
Definition: PETScOperator.h:22