22 #ifndef __HERMES_COMMON_PETSC_SOLVER_H_
23 #define __HERMES_COMMON_PETSC_SOLVER_H_
41 template <
typename Scalar>
class PetscLinearMatrixSolver;
50 template <
typename Scalar>
55 virtual ~PetscMatrix();
59 virtual void finish();
60 virtual Scalar
get(
unsigned int m,
unsigned int n)
const;
62 virtual void add(
unsigned int m,
unsigned int n, Scalar v);
64 virtual void export_to_file(
const char *filename,
const char *var_name,
MatrixExportFormat fmt,
char* number_format =
"%lf");
65 virtual unsigned int get_nnz()
const;
66 virtual double get_fill_in()
const;
74 void multiply_with_Scalar(Scalar value);
82 void create(
unsigned int size,
unsigned int nnz,
int* ap,
int* ai, Scalar* ax);
84 PetscMatrix* duplicate()
const;
88 virtual void add_petsc_matrix(PetscMatrix* mat);
97 friend class Solvers::PetscLinearMatrixSolver < Scalar > ;
102 template <
typename Scalar>
103 class PetscVector :
public Vector < Scalar >
107 virtual ~PetscVector();
109 virtual void alloc(
unsigned int ndofs);
112 virtual void finish();
113 virtual Scalar
get(
unsigned int idx)
const;
114 virtual void extract(Scalar *v)
const;
117 virtual void set(
unsigned int idx, Scalar y);
118 virtual void add(
unsigned int idx, Scalar y);
119 virtual void add(
unsigned int n,
unsigned int *idx, Scalar *y);
123 virtual void export_to_file(
const char *filename,
const char *var_name,
MatrixExportFormat fmt,
char* number_format =
"%lf");
131 friend class Solvers::PetscLinearMatrixSolver < Scalar > ;
138 template <
typename Scalar>
139 class HERMES_API PetscLinearMatrixSolver :
public DirectSolver < Scalar >
142 PetscLinearMatrixSolver(PetscMatrix<Scalar> *mat, PetscVector<Scalar> *rhs);
143 virtual ~PetscLinearMatrixSolver();
145 virtual void solve();
146 virtual int get_matrix_size();
149 PetscMatrix<Scalar> *m;
151 PetscVector<Scalar> *rhs;
General (abstract) matrix representation in Hermes.
General namespace for the Hermes library.
Linear matrix solver functionality.
General (abstract) vector representation in Hermes.
General (abstract) sparse matrix representation in Hermes.
MatrixExportFormat
Format of file matrix and vector output.
Basic matrix classes and operations.
void change_sign(T **matrix, unsigned int m, unsigned int n)
Changes the sign of a matrix.