Advanced Multi-Physics (AMP)
On-Line Documentation
NativePetscVectorOperations.h
Go to the documentation of this file.
1#ifndef included_AMP_NativePetscVectorOperations
2#define included_AMP_NativePetscVectorOperations
3
4#include "petsc.h"
5#include "petsc/private/vecimpl.h"
6#include "petscvec.h"
7
8#include "AMP/vectors/operations/default/VectorOperationsDefault.h"
9#include "AMP/vectors/petsc/NativePetscVectorData.h"
10
11namespace AMP::LinearAlgebra {
12
13
25{
26private:
27 void resetArray();
28 void resetArray() const;
29
30 //**********************************************************************
31 // functions that operate on VectorData
33 static Vec getPetscVec( const VectorData &x );
34 static Vec getConstPetscVec( const VectorData &x );
35
37 static const NativePetscVectorData *getNativeVec( const VectorData &vx );
38
39public:
40 void copy( const VectorData &x, VectorData &z ) override;
41 void zero( VectorData &x ) override;
42 void setToScalar( const Scalar &alpha, VectorData &z ) override;
43 void setRandomValues( VectorData &x ) override;
44 void scale( const Scalar &alpha, const VectorData &x, VectorData &y ) override;
45 void scale( const Scalar &alpha, VectorData &x ) override;
46 void add( const VectorData &x, const VectorData &y, VectorData &z ) override;
47 void subtract( const VectorData &x, const VectorData &y, VectorData &z ) override;
48 void multiply( const VectorData &x, const VectorData &y, VectorData &z ) override;
49 void divide( const VectorData &x, const VectorData &y, VectorData &z ) override;
50 void reciprocal( const VectorData &x, VectorData &y ) override;
51 void linearSum( const Scalar &alpha,
52 const VectorData &x,
53 const Scalar &beta,
54 const VectorData &y,
55 VectorData &z ) override;
56 void
57 axpy( const Scalar &alpha, const VectorData &x, const VectorData &y, VectorData &z ) override;
58 void
59 axpby( const Scalar &alpha, const Scalar &beta, const VectorData &x, VectorData &y ) override;
60 void abs( const VectorData &x, VectorData &z ) override;
61 void addScalar( const VectorData &x, const Scalar &alpha_in, VectorData &y ) override;
62 Scalar min( const VectorData &x ) const override;
63 Scalar max( const VectorData &x ) const override;
64 Scalar L1Norm( const VectorData &x ) const override;
65 Scalar L2Norm( const VectorData &x ) const override;
66 Scalar maxNorm( const VectorData &x ) const override;
67 Scalar dot( const VectorData &x, const VectorData &y ) const override;
68 Scalar localL1Norm( const VectorData &x ) const override;
69 Scalar localL2Norm( const VectorData &x ) const override;
70 Scalar localMaxNorm( const VectorData &x ) const override;
71 Scalar localDot( const VectorData &x, const VectorData &y ) const override;
72 void axpbypcz( const Scalar &alpha,
73 const VectorData &x,
74 const Scalar &beta,
75 const VectorData &y,
76 const Scalar &gamma,
77 VectorData &z );
78
79private:
80public: // Pull VectorOperations into the current scope
101
102private:
103 std::shared_ptr<PetscRandom> d_PetscRandom; // PETSc random context
104};
105
106
107} // namespace AMP::LinearAlgebra
108
109#endif
void subtract(const VectorData &x, const VectorData &y, VectorData &z) override
Subtracts one vector from another. For Vectors, .
void axpy(const Scalar &alpha, const VectorData &x, const VectorData &y, VectorData &z) override
Set this vector to alpha * x + y. .
Scalar dot(const VectorData &x, const VectorData &y) const override
Return the dot product of this vector with the argument vector.
void scale(const Scalar &alpha, const VectorData &x, VectorData &y) override
Set vector equal to scaled input. For Vectors, .
void copy(const VectorData &x, VectorData &z) override
Set vector equal to x For Vectors, .
void linearSum(const Scalar &alpha, const VectorData &x, const Scalar &beta, const VectorData &y, VectorData &z) override
Set a vector to be a linear combination of two vectors. .
void axpbypcz(const Scalar &alpha, const VectorData &x, const Scalar &beta, const VectorData &y, const Scalar &gamma, VectorData &z)
Scalar L1Norm(const VectorData &x) const override
Return discrete -norm of this vector.
void addScalar(const VectorData &x, const Scalar &alpha_in, VectorData &y) override
set vector to .
void axpby(const Scalar &alpha, const Scalar &beta, const VectorData &x, VectorData &y) override
Set this vector alpha * x + this. .
void multiply(const VectorData &x, const VectorData &y, VectorData &z) override
Component-wise multiply one vector with another. For Vectors, .
void reciprocal(const VectorData &x, VectorData &y) override
Set this to the component-wise reciprocal of a vector. .
void add(const VectorData &x, const VectorData &y, VectorData &z) override
Adds two vectors. For Vectors, .
Scalar max(const VectorData &x) const override
Return the maximum value of the vector. .
Scalar localL1Norm(const VectorData &x) const override
Return local discrete -norm of this vector.
static const NativePetscVectorData * getNativeVec(const VectorData &vx)
Scalar localMaxNorm(const VectorData &x) const override
Return the local -norm of this vector.
void setRandomValues(VectorData &x) override
Set data in this vector to random values.
Scalar localL2Norm(const VectorData &x) const override
Return local discrete -norm of this vector.
Scalar L2Norm(const VectorData &x) const override
Return discrete -norm of this vector.
static NativePetscVectorData * getNativeVec(VectorData &vx)
static Vec getConstPetscVec(const VectorData &x)
void setToScalar(const Scalar &alpha, VectorData &z) override
Set all compenents of a vector to a scalar. For Vectors, the components of z are set to .
static Vec getPetscVec(const VectorData &x)
void abs(const VectorData &x, VectorData &z) override
Set this to the component-wise absolute value of a vector. .
Scalar maxNorm(const VectorData &x) const override
Return the -norm of this vector.
void zero(VectorData &x) override
Set vector entries (including ghosts) to zero.
void divide(const VectorData &x, const VectorData &y, VectorData &z) override
Component-wise divide one vector by another. For Vectors, .
Scalar localDot(const VectorData &x, const VectorData &y) const override
Return the local dot product of this vector with the argument vector.
void scale(const Scalar &alpha, VectorData &x) override
Scale a vector. For Vectors, .
Scalar min(const VectorData &x) const override
Return the minimum value of the vector. .
A class used to hold vector data.
Definition VectorData.h:38
virtual Scalar wrmsNorm(const VectorData &x, const VectorData &y) const
Return a weighted norm of a vector.
void axpby(const Scalar &alpha, const Scalar &beta, const VectorData &x, VectorData &y) override
Set this vector alpha * x + this. .
void scale(const Scalar &alpha, const VectorData &x, VectorData &y) override
Set vector equal to scaled input. For Vectors, .
virtual Scalar max(const VectorData &x) const
Return the maximum value of the vector. .
void multiply(const VectorData &x, const VectorData &y, VectorData &z) override
Component-wise multiply one vector with another. For Vectors, .
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 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:
void add(const VectorData &x, const VectorData &y, VectorData &z) override
Adds two vectors. For Vectors, .
virtual Scalar dot(const VectorData &x, const VectorData &y) const
Return the dot product of this vector with the argument vector.
void abs(const VectorData &x, VectorData &z) override
Set this to the component-wise absolute value of a vector. .
void axpy(const Scalar &alpha, const VectorData &x, const VectorData &y, VectorData &z) override
Set this vector to alpha * x + y. .
void divide(const VectorData &x, const VectorData &y, VectorData &z) override
Component-wise divide one vector by another. For Vectors, .
void subtract(const VectorData &x, const VectorData &y, VectorData &z) override
Subtracts one vector from another. For Vectors, .
void setRandomValues(VectorData &x) override
Set data in this vector to random values.
void reciprocal(const VectorData &x, VectorData &y) override
Set this to the component-wise reciprocal of a vector. .
virtual Scalar L2Norm(const VectorData &x) const
Return discrete -norm of this vector.
void linearSum(const Scalar &alpha, const VectorData &x, const Scalar &beta, const VectorData &y, VectorData &z) override
Set a vector to be a linear combination of two vectors. .
Scalar is a class used to store a scalar variable that may be different types/precision.
Definition Scalar.h:21
PETSc vector.



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