19#include <petscsystypes.h>
41template<
typename MatrixOrVector>
48template <
typename MatrixOrVector>
55template <
typename MatrixOrVector>
62template <
typename MatrixOrVector>
69template <
typename MatrixOrVector>
77template<
typename MatrixOrVector>
82template<
typename MatrixOrVector>
86template<
typename MatrixOrVector>
90template<
typename MatrixOrVector>
93template<
typename MatrixOrVector>
108template <
typename Matrix>
119template<
typename Matrix,
typename Vector>
120void matMult(Matrix
const& A, Vector
const& x, Vector& y)
132template<
typename Matrix,
typename Vector>
161void copy(PETScVector
const& x, PETScVector& y);
173 PETScVector
const& x);
177void copy(PETScMatrix
const& A, PETScMatrix& B);
191void matMult(PETScMatrix
const& A, PETScVector
const& x, PETScVector& y);
194void matMultAdd(PETScMatrix
const& A, PETScVector
const&
v1,
195 PETScVector
const&
v2, PETScVector&
v3);
226void set(EigenVector& x,
double const a);
228void copy(EigenVector
const& x, EigenVector& y);
230void scale(EigenVector& x,
double const a);
233void aypx(EigenVector& y,
double const a, EigenVector
const& x);
236void axpy(EigenVector& y,
double const a, EigenVector
const& x);
239void axpby(EigenVector& y,
double const a,
double const b, EigenVector
const& x);
244void copy(EigenMatrix
const& A, EigenMatrix& B);
247void scale(EigenMatrix& A,
double const a);
250void aypx(EigenMatrix& Y,
double const a, EigenMatrix
const& X);
253void axpy(EigenMatrix& Y,
double const a, EigenMatrix
const& X);
259void matMult(EigenMatrix
const& A, EigenVector
const& x, EigenVector& y);
262void matMultAdd(EigenMatrix
const& A, EigenVector
const&
v1,
263 EigenVector
const&
v2, EigenVector&
v3);
285template <
typename VectorType>
291 OGS_FATAL(
"An invalid norm type has been passed");
302 if (
norm_x > std::numeric_limits<double>::epsilon())
308 if (
norm_diff < std::numeric_limits<double>::epsilon())
314 return norm_diff / std::numeric_limits<double>::epsilon();
double norm(MatrixOrVector const &x, MathLib::VecNormType type)
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)
VecNormType
Norm type. Not declared as class type in order to use the members as integers.