1#ifndef included_AMP_MultiVectorOperations
2#define included_AMP_MultiVectorOperations
5#include "AMP/vectors/operations/VectorOperations.h"
41 std::string
VectorOpName()
const override {
return "MultiVectorOperations"; }
Class to manage reading/writing restart data.
A class used to hold vector data.
A set of vector operations for multivectors.
void setRandomValues(VectorData &) override
Set data in this vector to random values.
void scale(const Scalar &, const VectorData &, VectorData &) override
Set vector equal to scaled input. For Vectors, .
void writeRestart(int64_t fid) const override
Write restart data to file.
bool localEquals(const VectorData &, const VectorData &, const Scalar &tol=1e-6) const override
Determine if the local portion of two vectors are equal using an absolute tolerance.
void reciprocal(const VectorData &, VectorData &) override
Set this to the component-wise reciprocal of a vector. .
Scalar localSum(const VectorData &) const override
Return the local sum of the vector.
void addScalar(const VectorData &, const Scalar &, VectorData &) override
set vector to .
void subtract(const VectorData &, const VectorData &, VectorData &) override
Subtracts one vector from another. For Vectors, .
void setMax(const Scalar &val, VectorData &x) override
modify vector to set .
std::shared_ptr< VectorOperations > cloneOperations() const override
Clone the operations.
void registerChildObjects(AMP::IO::RestartManager *manager) const override
Register any child objects.
void setMin(const Scalar &val, VectorData &x) override
modify vector to set .
Scalar localWrmsNorm(const VectorData &, const VectorData &) const override
Return a weighted norm of a vector.
Scalar localDot(const VectorData &, const VectorData &) const override
Return the local dot product of this vector with the argument vector.
void resetVectorOperations(std::vector< std::shared_ptr< VectorOperations > > ops)
void setToScalar(const Scalar &, VectorData &) override
Set all compenents of a vector to a scalar. For Vectors, the components of z are set to .
Scalar localMin(const VectorData &) const override
Return the local minimum value of the vector. .
void copy(const VectorData &, VectorData &) override
Set vector equal to x For Vectors, .
Scalar localL2Norm(const VectorData &) const override
Return local discrete -norm of this vector.
static VectorData * getVectorDataComponent(VectorData &, size_t)
static MultiVectorData * getMultiVectorData(VectorData &)
MultiVectorOperations(int64_t fid, AMP::IO::RestartManager *manager)
void axpy(const Scalar &, const VectorData &, const VectorData &, VectorData &) override
Set this vector to alpha * x + y. .
std::string VectorOpName() const override
Get the type name.
void linearSum(const Scalar &, const VectorData &, const Scalar &, const VectorData &, VectorData &) override
Set a vector to be a linear combination of two vectors. .
void axpby(const Scalar &, const Scalar &, const VectorData &, VectorData &) override
Set this vector alpha * x + this. .
Scalar localMaxNorm(const VectorData &) const override
Return the local -norm of this vector.
Scalar localMax(const VectorData &) const override
Return the local maximum value of the vector. .
static const MultiVectorData * getMultiVectorData(const VectorData &)
virtual ~MultiVectorOperations()
Destructor.
static const VectorData * getVectorDataComponent(const VectorData &, size_t)
MultiVectorOperations(std::shared_ptr< VectorOperations > op)
Scalar localWrmsNormMask(const VectorData &, const VectorData &, const VectorData &) const override
Return a weighted norm of a subset of a vector.
static size_t getVectorDataSize(const VectorData &)
Scalar localMinQuotient(const VectorData &, const VectorData &) const override
Returns the local minimum of the quotient of two vectors:
void multiply(const VectorData &, const VectorData &, VectorData &) override
Component-wise multiply one vector with another. For Vectors, .
void zero(VectorData &) override
Set vector entries (including ghosts) to zero.
void divide(const VectorData &, const VectorData &, VectorData &) override
Component-wise divide one vector by another. For Vectors, .
void abs(const VectorData &, VectorData &) override
Set this to the component-wise absolute value of a vector. .
std::vector< std::shared_ptr< VectorOperations > > d_operations
void copyCast(const VectorData &x, VectorData &z) override
Set vector equal to x (with different precision) For Vectors, .
void add(const VectorData &, const VectorData &, VectorData &) override
Adds two vectors. For Vectors, .
Scalar localL1Norm(const VectorData &) const override
Return local discrete -norm of this vector.
void scale(const Scalar &, VectorData &) override
Scale a vector. For Vectors, .
A class used to hold vector data.
A class used to hold vector operations.
virtual Scalar wrmsNorm(const VectorData &x, const VectorData &y) const
Return a weighted norm of a vector.
virtual void scale(const Scalar &alpha, const VectorData &x, VectorData &y)=0
Set vector equal to scaled input. For Vectors, .
virtual void linearSum(const Scalar &alpha, const VectorData &x, const Scalar &beta, const VectorData &y, VectorData &z)=0
Set a vector to be a linear combination of two vectors. .
virtual void multiply(const VectorData &x, const VectorData &y, VectorData &z)=0
Component-wise multiply one vector with another. For Vectors, .
virtual void setRandomValues(VectorData &x)=0
Set data in this vector to random values.
virtual void abs(const VectorData &x, VectorData &z)=0
Set this to the component-wise absolute value of a vector. .
virtual Scalar wrmsNormMask(const VectorData &x, const VectorData &mask, const VectorData &y) const
Return a weighted norm of a subset of a vector.
virtual Scalar minQuotient(const VectorData &x, const VectorData &y) const
Returns the minimum of the quotient of two vectors:
virtual Scalar dot(const VectorData &x, const VectorData &y) const
Return the dot product of this vector with the argument vector.
virtual void addScalar(const VectorData &x, const Scalar &alpha, VectorData &y)=0
set vector to .
virtual bool equals(const VectorData &x, const VectorData &y, const Scalar &tol) const
Check if two vectors are equal.
virtual void setMax(const Scalar &val, VectorData &x)=0
modify vector to set .
virtual void reciprocal(const VectorData &x, VectorData &y)=0
Set this to the component-wise reciprocal of a vector. .
virtual void axpy(const Scalar &alpha, const VectorData &x, const VectorData &y, VectorData &z)=0
Set this vector to alpha * x + y. .
virtual void divide(const VectorData &x, const VectorData &y, VectorData &z)=0
Component-wise divide one vector by another. For Vectors, .
virtual void add(const VectorData &x, const VectorData &y, VectorData &z)=0
Adds two vectors. For Vectors, .
virtual void axpby(const Scalar &alpha, const Scalar &beta, const VectorData &x, VectorData &y)=0
Set this vector alpha * x + this. .
virtual void setMin(const Scalar &val, VectorData &x)=0
modify vector to set .
virtual void subtract(const VectorData &x, const VectorData &y, VectorData &z)=0
Subtracts one vector from another. For Vectors, .
Scalar is a class used to store a scalar variable that may be different types/precision.