Advanced Multi-Physics (AMP)
On-Line Documentation
NativePetscMatrixData.h
Go to the documentation of this file.
1#ifndef included_AMP_Petsc_MatrixData
2#define included_AMP_Petsc_MatrixData
3
4// AMP files
5#include "AMP/matrices/data/MatrixData.h"
6#include "petscmat.h"
7
8namespace AMP::LinearAlgebra {
9
14{
15public:
17
18 explicit NativePetscMatrixData( std::shared_ptr<MatrixParametersBase> params );
19
24 explicit NativePetscMatrixData( Mat m, bool dele = false );
25
29
35 static std::shared_ptr<MatrixData> duplicateMat( Mat m );
36
40 void copyFromMat( Mat m );
41
43 virtual std::string type() const override { return "NativePetscMatrixData"; }
44
45 std::shared_ptr<MatrixData> cloneMatrixData() const override;
46
47 std::shared_ptr<MatrixData> transpose() const override;
48
49 void removeRange( AMP::Scalar, AMP::Scalar ) override { AMP_ERROR( "Not implemented" ); }
50
52 size_t, size_t, const size_t *, const size_t *, const void *, const typeID & ) override;
54 size_t, size_t, const size_t *, const size_t *, const void *, const typeID & ) override;
56 size_t, size_t, const size_t *, const size_t *, void *, const typeID & ) const override;
57 void getRowByGlobalID( size_t, std::vector<size_t> &, std::vector<double> & ) const override;
58
59 size_t numberColumnIDs( size_t row ) const override;
60 std::vector<size_t> getColumnIDs( size_t ) const override;
61
63
64 std::shared_ptr<Vector> createInputVector() const;
65 std::shared_ptr<Vector> createOutputVector() const;
66 std::shared_ptr<Discretization::DOFManager> getRightDOFManager() const override;
67 std::shared_ptr<Discretization::DOFManager> getLeftDOFManager() const override;
68
69 size_t numGlobalRows() const override;
70 size_t numGlobalColumns() const override;
71
72 Mat getMat() { return d_Mat; }
73
74 void setMat( Mat mat, bool manage = true );
75
76 AMP_MPI getComm() const override;
77
80 typeID getCoeffType() const override
81 {
82 constexpr auto type = getTypeID<PetscScalar>();
83 return type;
84 }
85
86private:
87 Mat d_Mat = nullptr;
89};
90
91
92} // namespace AMP::LinearAlgebra
93
94
95#endif
struct _p_Mat * Mat
Provides C++ wrapper around MPI routines.
Definition AMP_MPI.h:63
This is a thin wrapper around PETSc Mat.
typeID getCoeffType() const override
Return the typeid of the matrix coeffs.
NativePetscMatrixData(std::shared_ptr< MatrixParametersBase > params)
std::shared_ptr< MatrixData > transpose() const override
Transpose.
AMP_MPI getComm() const override
Get the comm.
std::shared_ptr< Vector > createInputVector() const
void addValuesByGlobalID(size_t, size_t, const size_t *, const size_t *, const void *, const typeID &) override
Add values to those in the matrix.
std::shared_ptr< Discretization::DOFManager > getLeftDOFManager() const override
Get the DOFManager associated with a left vector ( For , is a left vector )
size_t numberColumnIDs(size_t row) const override
Given a row, retrieve the number of non-zero column indices of the matrix.
std::shared_ptr< Discretization::DOFManager > getRightDOFManager() const override
Get the DOFManager associated with a right vector ( For , is a right vector )
static std::shared_ptr< MatrixData > duplicateMat(Mat m)
Create a NativePetscMatrixData with the same non-zero structure.
NativePetscMatrixData(Mat m, bool dele=false)
Construct a matrix from a PETSc Mat.
size_t numGlobalColumns() const override
Get the number of global columns in the matrix.
void getRowByGlobalID(size_t, std::vector< size_t > &, std::vector< double > &) const override
Retrieve a row of the matrix in compressed format.
void setMat(Mat mat, bool manage=true)
std::shared_ptr< Vector > createOutputVector() const
void makeConsistent(AMP::LinearAlgebra::ScatterType t) override
Perform communication to ensure values in the matrix are the same across cores.
void copyFromMat(Mat m)
Copy data from a PETSc Mat.
void setValuesByGlobalID(size_t, size_t, const size_t *, const size_t *, const void *, const typeID &) override
Set values in the matrix.
std::vector< size_t > getColumnIDs(size_t) const override
Given a row, retrieve the non-zero column indices of the matrix in compressed format.
void getValuesByGlobalID(size_t, size_t, const size_t *, const size_t *, void *, const typeID &) const override
Get values in the matrix.
virtual std::string type() const override
Return the type of the matrix.
void removeRange(AMP::Scalar, AMP::Scalar) override
Remove matrix entries within given range.
std::shared_ptr< MatrixData > cloneMatrixData() const override
Clone the data.
size_t numGlobalRows() const override
Get the number of global rows in the matrix.
Scalar is a class used to store a scalar variable that may be different types/precision.
Definition Scalar.h:21
#define AMP_ERROR(MSG)
Throw error.
ScatterType
Flag to choose algorithm for makeConsistent.
Definition Variable.h:21
Class to store type info.
Definition typeid.h:210



Advanced Multi-Physics (AMP)
Oak Ridge National Laboratory
Idaho National Laboratory
Los Alamos National Laboratory
This page automatically produced from the
source code by doxygen
Last updated: Tue Mar 10 2026 13:06:40.
Comments on this page