13#include <alien/core/backend/IInternalLinearAlgebraT.h>
14#include <alien/utils/Precomp.h>
37template <
class M,
class V>
197 virtual void dump([[maybe_unused]]
Matrix const& a, [[maybe_unused]] std::string
const& filename)
const
199 throw NotImplementedException(
200 A_FUNCINFO,
"IInternalLinearAlgebra::dump not implemented");
209 virtual void dump([[maybe_unused]]
Vector const& x, [[maybe_unused]] std::string
const& filename)
const
211 throw NotImplementedException(
212 A_FUNCINFO,
"IInternalLinearAlgebra::dump not implemented");
225 const Matrix& a,
const UniqueArray<Real>& x, UniqueArray<Real>& r)
const = 0;
237 virtual void axpy(Real alpha,
const UniqueArray<Real>& x, UniqueArray<Real>& y)
const = 0;
248 virtual void aypx(Real alpha, UniqueArray<Real>& y,
const UniqueArray<Real>& x)
const = 0;
256 virtual void copy(
const UniqueArray<Real>& x, UniqueArray<Real>& r)
const = 0;
265 virtual Real
dot(Integer local_size,
const UniqueArray<Real>& x,
266 const UniqueArray<Real>& y)
const = 0;
273 virtual void scal(Real alpha, UniqueArray<Real>& x)
const = 0;
Internal linear algebra interface.
virtual Real dot(Integer local_size, const UniqueArray< Real > &x, const UniqueArray< Real > &y) const =0
Compute the dot product of two vectors.
virtual void mult(const Matrix &a, const Vector &x, Vector &r) const =0
Compute a matrix vector product.
virtual ~IInternalLinearAlgebraExpr()
Free resources.
virtual void add(const Matrix &a, Matrix &r) const =0
Add a matrix to another one.
virtual void scal(Real alpha, Matrix &a) const =0
Scale a matrix by a factor.
virtual Real norm1(const Vector &x) const =0
Compute L1 norm of a vector.
virtual void copy(const UniqueArray< Real > &x, UniqueArray< Real > &r) const =0
Copy a vector in another one.
virtual Real dot(const Vector &x, const Vector &y) const =0
Compute the dot product of two vectors.
virtual void scal(Real alpha, Vector &x) const =0
Scale a vector by a factor.
virtual void diagonal(const Matrix &a, Vector &x) const =0
Extract the diagonal of a matrix in a vector.
virtual void axpy(Real alpha, const UniqueArray< Real > &x, UniqueArray< Real > &y) const =0
Scale a vector by a factor and adds the result to another vector.
virtual void dump(Matrix const &a, std::string const &filename) const
Dumps a matrix to a file.
V Vector
Type of the vector used.
virtual void pointwiseMult(const Vector &x, const Vector &y, Vector &w) const =0
Compute the point wise multiplication of two vectors and store the result in another one.
virtual Real norm0(const Vector &x) const =0
Compute L0 norm of a vector.
virtual Real normInf(const Vector &x) const =0
Compute LInf norm of a vector.
virtual void scal(Real alpha, UniqueArray< Real > &x) const =0
Scale a vector by a factor.
virtual void dump(Vector const &x, std::string const &filename) const
Dumps a vector to a file.
virtual Real norm2(const Matrix &x) const =0
Compute L2 (Frobenous) norm of a matrix.
virtual void axpy(Real alpha, const Vector &x, Vector &y) const =0
Scale a vector by a factor and adds the result to another vector.
virtual void aypx(Real alpha, Vector &y, const Vector &x) const =0
Scale a vector by a factor and adds the result to another vector.
virtual void copy(const Matrix &a, Matrix &r) const =0
Copy a matrix in another one.
virtual void reciprocal(Vector &x) const =0
Compute the reciprocal of a vector.
virtual void copy(const Vector &x, Vector &r) const =0
Copy a vector in another one.
virtual void aypx(Real alpha, UniqueArray< Real > &y, const UniqueArray< Real > &x) const =0
Scale a vector by a factor and adds the result to another vector.
M Matrix
Type of the matrix used.
virtual void mult(const Matrix &a, const UniqueArray< Real > &x, UniqueArray< Real > &r) const =0
Compute a matrix vector product.
virtual Real norm2(const Vector &x) const =0
Compute L2 norm of a vector.
Implementation of an algebraic space.
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --