164 if (!
v3.getRawVector())
194 "Normalization operation is not implemented yet for PETSc library! "
195 "Program terminated.");
226void set(EigenVector& x,
double const a)
228 x.getRawVector().setConstant(a);
231void copy(EigenVector
const& x, EigenVector& y)
236void scale(EigenVector& x,
double const a)
238 x.getRawVector() *= a;
242void aypx(EigenVector& y,
double const a, EigenVector
const& x)
245 y.getRawVector() = a * y.getRawVector() + x.getRawVector();
249void axpy(EigenVector& y,
double const a, EigenVector
const& x)
252 y.getRawVector() += a * x.getRawVector();
256void axpby(EigenVector& y,
double const a,
double const b, EigenVector
const& x)
259 y.getRawVector() = a * x.getRawVector() + b * y.getRawVector();
266 EigenVector
const& y)
268 w.getRawVector().noalias() = x.getRawVector().binaryExpr(
270 [](
auto const x,
auto const y) { return y == 0 ? 0.0 : x / y; });
276double norm1(EigenVector
const& x)
278 return x.getRawVector().lpNorm<1>();
284double norm2(EigenVector
const& x)
286 return x.getRawVector().norm();
292double normMax(EigenVector
const& x)
294 return x.getRawVector().lpNorm<Eigen::Infinity>();
299void copy(EigenMatrix
const& A, EigenMatrix& B)
305void scale(EigenMatrix& A,
double const a)
308 A.getRawMatrix() *= a;
312void aypx(EigenMatrix& Y,
double const a, EigenMatrix
const& X)
315 Y.getRawMatrix() = a * Y.getRawMatrix() + X.getRawMatrix();
319void axpy(EigenMatrix& Y,
double const a, EigenMatrix
const& X)
322 Y.getRawMatrix() = a * X.getRawMatrix() + Y.getRawMatrix();
328void matMult(EigenMatrix
const& A, EigenVector
const& x, EigenVector& y)
331 y.getRawVector() = A.getRawMatrix() * x.getRawVector();
335void matMultAdd(EigenMatrix
const& A, EigenVector
const&
v1,
336 EigenVector
const&
v2, EigenVector&
v3)
341 v2.getRawVector() + A.getRawMatrix() *
v1.getRawVector();
345 EigenVector
const& b, EigenVector&
new_b)
351 if (A.getRawMatrix().rows() == A.getRawMatrix().cols())
354 "The number of rows and columns are the same for the LHS matrix."
355 "Are you sure you still need to normalize the LHS matrix and RHS "
359 new_b.getRawVector() = A.getRawMatrix().transpose() * b.getRawVector();
360 new_A.getRawMatrix() = A.getRawMatrix().transpose() * A.getRawMatrix();
365 x.getRawMatrix().makeCompressed();
void WARN(fmt::format_string< Args... > fmt, Args &&... args)
Declaration of class PETScMatrix, which provides an interface to PETSc matrix routines.
Declaration of class PETScVector, which provides an interface to PETSc vector routines.
Wrapper class for PETSc matrix routines for matrix.
Mat & getRawMatrix()
Get matrix reference.
void finalizeAssembly(const MatAssemblyType asm_type=MAT_FINAL_ASSEMBLY)
Perform MPI collection of assembled entries in buffer.
Wrapper class for PETSc vector.
void finalizeAssembly()
Perform MPI collection of assembled entries in buffer.
void setLocalAccessibleVector() const
void shallowCopy(const PETScVector &v)
PETSc_Vec & getRawVector()
Exposes the underlying 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)
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)