41 #ifndef EPETRAEXT_MATRIXMATRIX_H 42 #define EPETRAEXT_MATRIXMATRIX_H 46 class Epetra_CrsMatrix;
55 class CrsMatrixStruct;
94 static int Multiply(
const Epetra_CrsMatrix& A,
96 const Epetra_CrsMatrix& B,
99 bool call_FillComplete_on_result=
true);
116 static int Add(
const Epetra_CrsMatrix& A,
143 static int Add(
const Epetra_CrsMatrix& A,
146 const Epetra_CrsMatrix & B,
149 Epetra_CrsMatrix * & C);
177 static int Jacobi(
double omega,
178 const Epetra_Vector & Dinv,
179 const Epetra_CrsMatrix& A,
180 const Epetra_CrsMatrix& B,
182 bool call_FillComplete_on_result=
true);
185 template<
typename int_type>
186 static int Tmult_A_B(
const Epetra_CrsMatrix & A,
188 const Epetra_CrsMatrix & B,
191 bool call_FillComplete_on_result);
193 static int mult_A_B(
const Epetra_CrsMatrix & A,
195 const Epetra_CrsMatrix & B,
198 bool call_FillComplete_on_result);
200 template<
typename int_type>
203 Epetra_CrsMatrix & C);
207 Epetra_CrsMatrix & C);
209 template<
typename int_type>
210 static int TMultiply(
const Epetra_CrsMatrix& A,
212 const Epetra_CrsMatrix& B,
215 bool call_FillComplete_on_result);
217 template<
typename int_type>
218 static int TAdd(
const Epetra_CrsMatrix& A,
224 template<
typename int_type>
225 static int TAdd(
const Epetra_CrsMatrix& A,
228 const Epetra_CrsMatrix & B,
231 Epetra_CrsMatrix * & C);
233 template<
typename int_type>
234 static int Tjacobi_A_B(
double omega,
235 const Epetra_Vector & Dinv,
236 const Epetra_CrsMatrix & A,
238 const Epetra_CrsMatrix & B,
241 bool call_FillComplete_on_result);
243 static int jacobi_A_B(
double omega,
244 const Epetra_Vector & Dinv,
245 const Epetra_CrsMatrix & A,
247 const Epetra_CrsMatrix & B,
250 bool call_FillComplete_on_result);
252 template<
typename int_type>
253 static int TJacobi(
double omega,
254 const Epetra_Vector & Dinv,
255 const Epetra_CrsMatrix& A,
256 const Epetra_CrsMatrix& B,
258 bool call_FillComplete_on_result);
269 template<
typename int_type>
270 double sparsedot(
double* u, int_type* u_ind,
int u_len,
271 double* v, int_type* v_ind,
int v_len);
static int Multiply(const Epetra_CrsMatrix &A, bool transposeA, const Epetra_CrsMatrix &B, bool transposeB, Epetra_CrsMatrix &C, bool call_FillComplete_on_result=true)
Given Epetra_CrsMatrix objects A, B and C, form the product C = A*B.
virtual ~MatrixMatrix()
destructor
EpetraExt::BlockCrsMatrix: A class for constructing a distributed block matrix.
Collection of matrix-matrix operations.
static int Add(const Epetra_CrsMatrix &A, bool transposeA, double scalarA, Epetra_CrsMatrix &B, double scalarB)
Given Epetra_CrsMatrix objects A and B, form the sum B = a*A + b*B.
double sparsedot(double *u, int_type *u_ind, int u_len, double *v, int_type *v_ind, int v_len)
Method for internal use...
static int Jacobi(double omega, const Epetra_Vector &Dinv, const Epetra_CrsMatrix &A, const Epetra_CrsMatrix &B, Epetra_CrsMatrix &C, bool call_FillComplete_on_result=true)
Given Epetra_CrsMatrix objects A, B and C, and Epetra_Vector Dinv, form the product C = (I-omega * Di...