12#include <petscsystypes.h>
36template <
typename MatrixOrVector>
37void copy(MatrixOrVector
const& x, MatrixOrVector& y)
43template <
typename MatrixOrVector>
44void scale(MatrixOrVector& x,
double const a)
50template <
typename MatrixOrVector>
51void aypx(MatrixOrVector& y,
double const a, MatrixOrVector
const& x)
57template <
typename MatrixOrVector>
58void axpy(MatrixOrVector& y,
double const a, MatrixOrVector
const& x)
64template <
typename MatrixOrVector>
65void axpby(MatrixOrVector& y,
double const a,
double const b,
66 MatrixOrVector
const& x)
72template <
typename MatrixOrVector>
74 MatrixOrVector
const& y);
77template <
typename MatrixOrVector>
78double norm1(MatrixOrVector
const& x);
81template <
typename MatrixOrVector>
82double norm2(MatrixOrVector
const& x);
85template <
typename MatrixOrVector>
88template <
typename MatrixOrVector>
104template <
typename Matrix>
115template <
typename Matrix,
typename Vector>
116void matMult(Matrix
const& A, Vector
const& x, Vector& y)
128template <
typename Matrix,
typename Vector>
129void matMultAdd(Matrix
const& A, Vector
const& v1, Vector
const& v2, Vector& v3)
156void set(PETScVector& x, PetscScalar
const a);
158void copy(PETScVector
const& x, PETScVector& y);
160void scale(PETScVector& x, PetscScalar
const a);
163void aypx(PETScVector& y, PetscScalar
const a, PETScVector
const& x);
166void axpy(PETScVector& y, PetscScalar
const a, PETScVector
const& x);
169void axpby(PETScVector& y, PetscScalar
const a, PetscScalar
const b,
170 PETScVector
const& x);
174void copy(PETScMatrix
const& A, PETScMatrix& B);
177void scale(PETScMatrix& A, PetscScalar
const a);
180void aypx(PETScMatrix& Y, PetscScalar
const a, PETScMatrix
const&
X);
183void axpy(PETScMatrix& Y, PetscScalar
const a, PETScMatrix
const&
X);
188void matMult(PETScMatrix
const& A, PETScVector
const& x, PETScVector& y);
191void matMultAdd(PETScMatrix
const& A, PETScVector
const& v1,
192 PETScVector
const& v2, PETScVector& v3);
197 PETScVector
const& b, PETScVector& new_b);
230void set(EigenVector& x,
double const a);
232void copy(EigenVector
const& x, EigenVector& y);
234void scale(EigenVector& x,
double const a);
237void aypx(EigenVector& y,
double const a, EigenVector
const& x);
240void axpy(EigenVector& y,
double const a, EigenVector
const& x);
243void axpby(EigenVector& y,
double const a,
double const b,
244 EigenVector
const& x);
248void copy(EigenMatrix
const& A, EigenMatrix& B);
251void scale(EigenMatrix& A,
double const a);
254void aypx(EigenMatrix& Y,
double const a, EigenMatrix
const&
X);
257void axpy(EigenMatrix& Y,
double const a, EigenMatrix
const&
X);
262void matMult(EigenMatrix
const& A, EigenVector
const& x, EigenVector& y);
265void matMultAdd(EigenMatrix
const& A, EigenVector
const& v1,
266 EigenVector
const& v2, EigenVector& v3);
270 EigenVector
const& b, EigenVector& new_b);
291template <
typename VectorType>
297 OGS_FATAL(
"An invalid norm type has been passed");
308 if (norm_x > std::numeric_limits<double>::epsilon())
310 return norm_diff / norm_x;
314 if (norm_diff < std::numeric_limits<double>::epsilon())
320 return norm_diff / std::numeric_limits<double>::epsilon();
Global vector based on Eigen vector.
Wrapper class for PETSc matrix routines for matrix.
Wrapper class for PETSc vector.
double norm(MatrixOrVector const &x, MathLib::VecNormType type)
void linearSysNormalize(PETScMatrix const &, PETScMatrix &, PETScVector const &, PETScVector &)
void finalizeAssembly(PETScMatrix &A)
double norm1(PETScVector const &x)
double normMax(PETScVector const &x)
void copy(PETScVector const &x, PETScVector &y)
void componentwiseDivide(PETScVector &w, PETScVector const &x, PETScVector const &y)
void setLocalAccessibleVector(PETScVector const &x)
void set(PETScVector &x, PetscScalar const a)
void matMult(PETScMatrix const &A, PETScVector const &x, PETScVector &y)
double computeRelativeNorm(VectorType const &x, VectorType const &y, MathLib::VecNormType norm_type)
void matMultAdd(PETScMatrix const &A, PETScVector const &v1, PETScVector const &v2, PETScVector &v3)
double norm2(PETScVector const &x)
void scale(PETScVector &x, PetscScalar const a)
void aypx(PETScVector &y, PetscScalar const a, PETScVector const &x)
void axpy(PETScVector &y, PetscScalar const a, PETScVector const &x)
void axpby(PETScVector &y, PetscScalar const a, PetscScalar const b, PETScVector const &x)
double const GaussLegendre< 1 >::X[1]