85 PetscScalar
norm = 0.;
95 PetscScalar
norm = 0.;
105 PetscScalar
norm = 0.;
128 MatAYPX(Y.
getRawMatrix(), a,
X.getRawMatrix(), DIFFERENT_NONZERO_PATTERN);
136 MatAXPY(Y.
getRawMatrix(), a,
X.getRawMatrix(), DIFFERENT_NONZERO_PATTERN);
187 "Normalization operation is not implemented yet for PETSc library! "
188 "Program terminated.");
219void set(EigenVector& x,
double const a)
221 x.getRawVector().setConstant(a);
224void copy(EigenVector
const& x, EigenVector& y)
229void scale(EigenVector& x,
double const a)
231 x.getRawVector() *= a;
235void aypx(EigenVector& y,
double const a, EigenVector
const& x)
238 y.getRawVector() = a * y.getRawVector() + x.getRawVector();
242void axpy(EigenVector& y,
double const a, EigenVector
const& x)
245 y.getRawVector() += a * x.getRawVector();
249void axpby(EigenVector& y,
double const a,
double const b, EigenVector
const& x)
252 y.getRawVector() = a * x.getRawVector() + b * y.getRawVector();
259 EigenVector
const& y)
261 w.getRawVector().noalias() = x.getRawVector().binaryExpr(
263 [](
auto const x,
auto const y) { return y == 0 ? 0.0 : x / y; });
269double norm1(EigenVector
const& x)
271 return x.getRawVector().lpNorm<1>();
277double norm2(EigenVector
const& x)
279 return x.getRawVector().norm();
285double normMax(EigenVector
const& x)
287 return x.getRawVector().lpNorm<Eigen::Infinity>();
292void copy(EigenMatrix
const& A, EigenMatrix& B)
298void scale(EigenMatrix& A,
double const a)
301 A.getRawMatrix() *= a;
305void aypx(EigenMatrix& Y,
double const a, EigenMatrix
const&
X)
308 Y.getRawMatrix() = a * Y.getRawMatrix() +
X.getRawMatrix();
312void axpy(EigenMatrix& Y,
double const a, EigenMatrix
const&
X)
315 Y.getRawMatrix() = a *
X.getRawMatrix() + Y.getRawMatrix();
321void matMult(EigenMatrix
const& A, EigenVector
const& x, EigenVector& y)
324 y.getRawVector() = A.getRawMatrix() * x.getRawVector();
328void matMultAdd(EigenMatrix
const& A, EigenVector
const& v1,
329 EigenVector
const& v2, EigenVector& v3)
334 v2.getRawVector() + A.getRawMatrix() * v1.getRawVector();
338 EigenVector
const& b, EigenVector& new_b)
341 assert(&A != &new_A);
342 assert(&b != &new_b);
344 if (A.getRawMatrix().rows() == A.getRawMatrix().cols())
347 "The number of rows and columns are the same for the LHS matrix."
348 "Are you sure you still need to normalize the LHS matrix and RHS "
352 new_b.getRawVector() = A.getRawMatrix().transpose() * b.getRawVector();
353 new_A.getRawMatrix() = A.getRawMatrix().transpose() * A.getRawMatrix();
358 x.getRawMatrix().makeCompressed();
void WARN(fmt::format_string< Args... > fmt, Args &&... args)
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)
double const GaussLegendre< 1 >::X[1]