Advanced Multi-Physics (AMP)
On-Line Documentation
VectorOperations.h
Go to the documentation of this file.
1#ifndef included_AMP_VectorOperations
2#define included_AMP_VectorOperations
3
4#include "AMP/vectors/Scalar.h"
5
6#include <memory>
7#include <vector>
8
9
10namespace AMP::IO {
11class RestartManager;
12}
13
14
15namespace AMP::LinearAlgebra {
16
17
18class VectorData;
19
20
27{
28public:
30 virtual ~VectorOperations() {}
31
33 virtual std::string VectorOpName() const = 0;
34
36 virtual std::shared_ptr<VectorOperations> cloneOperations() const = 0;
37
38 // VectorData versions
45 virtual void copy( const VectorData &x, VectorData &z ) = 0;
46
53 virtual void copyCast( const VectorData &x, VectorData &z ) = 0;
54
60 virtual void zero( VectorData &x ) = 0;
61
68 virtual void setToScalar( const Scalar &alpha, VectorData &z ) = 0;
69
74 virtual void setRandomValues( VectorData &x ) = 0;
75
83 virtual void scale( const Scalar &alpha, const VectorData &x, VectorData &y ) = 0;
91 virtual void scale( const Scalar &alpha, VectorData &x ) = 0;
100 virtual void add( const VectorData &x, const VectorData &y, VectorData &z ) = 0;
109 virtual void subtract( const VectorData &x, const VectorData &y, VectorData &z ) = 0;
110
118 virtual void multiply( const VectorData &x, const VectorData &y, VectorData &z ) = 0;
119
127 virtual void divide( const VectorData &x, const VectorData &y, VectorData &z ) = 0;
128
134 virtual void reciprocal( const VectorData &x, VectorData &y ) = 0;
135
145 virtual void linearSum( const Scalar &alpha,
146 const VectorData &x,
147 const Scalar &beta,
148 const VectorData &y,
149 VectorData &z ) = 0;
150
158 virtual void
159 axpy( const Scalar &alpha, const VectorData &x, const VectorData &y, VectorData &z ) = 0;
160
169 virtual void
170 axpby( const Scalar &alpha, const Scalar &beta, const VectorData &x, VectorData &y ) = 0;
171
178 virtual void abs( const VectorData &x, VectorData &z ) = 0;
179
187 virtual void addScalar( const VectorData &x, const Scalar &alpha, VectorData &y ) = 0;
188
194 virtual void setMax( const Scalar &val, VectorData &x ) = 0;
195
201 virtual void setMin( const Scalar &val, VectorData &x ) = 0;
202
207 virtual Scalar min( const VectorData &x ) const;
208
213 virtual Scalar max( const VectorData &x ) const;
214
219 virtual Scalar sum( const VectorData &x ) const;
220
225 Scalar mean( const VectorData &x ) const;
226
232 virtual Scalar L1Norm( const VectorData &x ) const;
233
239 virtual Scalar L2Norm( const VectorData &x ) const;
240
246 virtual Scalar maxNorm( const VectorData &x ) const;
254 virtual Scalar minQuotient( const VectorData &x, const VectorData &y ) const;
255
262 virtual Scalar wrmsNorm( const VectorData &x, const VectorData &y ) const;
263
271 virtual Scalar
272 wrmsNormMask( const VectorData &x, const VectorData &mask, const VectorData &y ) const;
273
280 virtual Scalar dot( const VectorData &x, const VectorData &y ) const;
281
289 virtual bool equals( const VectorData &x, const VectorData &y, const Scalar &tol ) const;
290
295 virtual Scalar localMin( const VectorData &x ) const = 0;
296
301 virtual Scalar localMax( const VectorData &x ) const = 0;
302
306 virtual Scalar localSum( const VectorData &x ) const = 0;
307
313 virtual Scalar localL1Norm( const VectorData &x ) const = 0;
314
320 virtual Scalar localL2Norm( const VectorData &x ) const = 0;
321
327 virtual Scalar localMaxNorm( const VectorData &x ) const = 0;
328
335 virtual Scalar localDot( const VectorData &x, const VectorData &y ) const = 0;
336
344 virtual Scalar localMinQuotient( const VectorData &x, const VectorData &y ) const = 0;
345
352 virtual Scalar localWrmsNorm( const VectorData &x, const VectorData &y ) const = 0;
353
361 virtual Scalar
362 localWrmsNormMask( const VectorData &x, const VectorData &mask, const VectorData &y ) const = 0;
363
371 virtual bool
372 localEquals( const VectorData &x, const VectorData &y, const Scalar &tol = 1e-6 ) const = 0;
373
374
376 uint64_t getID() const;
377
378
379public: // Write/read restart data
385 virtual void registerChildObjects( AMP::IO::RestartManager *manager ) const;
386
392 virtual void writeRestart( int64_t fid ) const;
393
394
395protected:
397
398protected:
399 uint64_t d_hash = 0;
400};
401
402
403} // namespace AMP::LinearAlgebra
404
405#endif
Class to manage reading/writing restart data.
A class used to hold vector data.
Definition VectorData.h:38
A class used to hold vector operations.
virtual Scalar localSum(const VectorData &x) const =0
Return the local sum of the vector.
virtual Scalar wrmsNorm(const VectorData &x, const VectorData &y) const
Return a weighted norm of a vector.
virtual void writeRestart(int64_t fid) const
Write restart data to file.
virtual std::shared_ptr< VectorOperations > cloneOperations() const =0
Clone the operations.
virtual std::string VectorOpName() const =0
Get the type name.
virtual void scale(const Scalar &alpha, const VectorData &x, VectorData &y)=0
Set vector equal to scaled input. For Vectors, .
virtual Scalar localWrmsNormMask(const VectorData &x, const VectorData &mask, const VectorData &y) const =0
Return a weighted norm of a subset of a vector.
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 Scalar localMax(const VectorData &x) const =0
Return the local maximum value of the vector. .
uint64_t getID() const
Get a unique id hash for the vector.
virtual Scalar sum(const VectorData &x) const
Return the sum of the values of the vector.
virtual void multiply(const VectorData &x, const VectorData &y, VectorData &z)=0
Component-wise multiply one vector with another. For Vectors, .
virtual Scalar max(const VectorData &x) const
Return the maximum value of the vector. .
virtual void setRandomValues(VectorData &x)=0
Set data in this vector to random values.
virtual Scalar localWrmsNorm(const VectorData &x, const VectorData &y) const =0
Return a weighted norm of a vector.
virtual void copy(const VectorData &x, VectorData &z)=0
Set vector equal to x For Vectors, .
virtual void abs(const VectorData &x, VectorData &z)=0
Set this to the component-wise absolute value of a vector. .
virtual Scalar localL1Norm(const VectorData &x) const =0
Return local discrete -norm of this vector.
virtual Scalar min(const VectorData &x) const
Return the minimum value of the vector. .
virtual Scalar maxNorm(const VectorData &x) const
Return the -norm of this vector.
virtual Scalar L1Norm(const VectorData &x) const
Return discrete -norm of this vector.
virtual Scalar localDot(const VectorData &x, const VectorData &y) const =0
Return the local dot product of this vector with the argument 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 localL2Norm(const VectorData &x) const =0
Return local discrete -norm of this 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 void registerChildObjects(AMP::IO::RestartManager *manager) const
Register any child objects.
virtual void zero(VectorData &x)=0
Set vector entries (including ghosts) to zero.
virtual bool equals(const VectorData &x, const VectorData &y, const Scalar &tol) const
Check if two vectors are equal.
virtual Scalar localMaxNorm(const VectorData &x) const =0
Return the local -norm of this vector.
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 bool localEquals(const VectorData &x, const VectorData &y, const Scalar &tol=1e-6) const =0
Determine if the local portion of two vectors are equal using an absolute tolerance.
virtual void copyCast(const VectorData &x, VectorData &z)=0
Set vector equal to x (with different precision) For Vectors, .
virtual Scalar localMin(const VectorData &x) const =0
Return the local minimum value of the vector. .
virtual void axpby(const Scalar &alpha, const Scalar &beta, const VectorData &x, VectorData &y)=0
Set this vector alpha * x + this. .
virtual void setToScalar(const Scalar &alpha, VectorData &z)=0
Set all compenents of a vector to a scalar. For Vectors, the components of z are set to .
virtual Scalar localMinQuotient(const VectorData &x, const VectorData &y) const =0
Returns the local minimum of the quotient of two vectors:
Scalar mean(const VectorData &x) const
Return the mean of the values of the vector.
virtual Scalar L2Norm(const VectorData &x) const
Return discrete -norm of this vector.
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.
Definition Scalar.h:21



Advanced Multi-Physics (AMP)
Oak Ridge National Laboratory
Idaho National Laboratory
Los Alamos National Laboratory
This page automatically produced from the
source code by doxygen
Last updated: Tue Mar 10 2026 13:06:41.
Comments on this page