Advanced Multi-Physics (AMP)
On-Line Documentation
TpetraVectorOperations.h
Go to the documentation of this file.
1#ifndef included_AMP_NativeTpetraVectorOperations_H_
2#define included_AMP_NativeTpetraVectorOperations_H_
3
4#include "AMP/vectors/Scalar.h"
5#include "AMP/vectors/Vector.h"
6#include "AMP/vectors/operations/VectorOperations.h"
7
8namespace AMP::LinearAlgebra {
9
10
19template<typename ST = double,
20 typename LO = int32_t,
21 typename GO = int64_t,
22 typename NT = Tpetra::Vector<>::node_type>
24{
25public:
27 virtual ~TpetraVectorOperations() = default;
28
29 std::string VectorOpName() const override { return "TpetraVectorOperations"; }
30 std::shared_ptr<VectorOperations> cloneOperations() const override
31 {
32 return std::make_shared<TpetraVectorOperations<ST, LO, GO, NT>>();
33 }
34 // function that operate on VectorData
35 void setToScalar( const Scalar &alpha, VectorData &z ) override;
36 void setMin( const Scalar &alpha, VectorData &z ) override;
37 void setMax( const Scalar &alpha, VectorData &z ) override;
38 void addScalar( const VectorData &, const Scalar &, VectorData & ) override;
39 void zero( VectorData &x ) override { setToScalar( static_cast<ST>( 0.0 ), x ); }
40 void setRandomValues( VectorData &x ) override;
41 void copy( const VectorData &x, VectorData &z ) override;
42 void copyCast( const VectorData &, VectorData & ) override { AMP_ERROR( "Not implemented!" ); }
43 void scale( const Scalar &alpha, const VectorData &x, VectorData &y ) override;
44 void scale( const Scalar &alpha, VectorData &x ) override;
45 void add( const VectorData &x, const VectorData &y, VectorData &z ) override;
46 void subtract( const VectorData &x, const VectorData &y, VectorData &z ) override;
47 void multiply( const VectorData &x, const VectorData &y, VectorData &z ) override;
48 void divide( const VectorData &x, const VectorData &y, VectorData &z ) override;
49 void reciprocal( const VectorData &x, VectorData &y ) override;
50 void linearSum( const Scalar &alpha,
51 const VectorData &x,
52 const Scalar &beta,
53 const VectorData &y,
54 VectorData &z ) override;
55 void
56 axpy( const Scalar &alpha, const VectorData &x, const VectorData &y, VectorData &z ) override;
57 void
58 axpby( const Scalar &alpha, const Scalar &beta, const VectorData &x, VectorData &y ) override;
59 void abs( const VectorData &x, VectorData &z ) override;
60
61 Scalar min( const VectorData &x ) const override;
62 Scalar max( const VectorData &x ) const override;
63 Scalar L1Norm( const VectorData &x ) const override;
64 Scalar L2Norm( const VectorData &x ) const override;
65 Scalar maxNorm( const VectorData &x ) const override;
66 Scalar dot( const VectorData &x, const VectorData &y ) const override;
67
71 Scalar localDot( const AMP::LinearAlgebra::VectorData &x, const VectorData &y ) const override;
72
77 const AMP::LinearAlgebra::VectorData & ) const override;
79 const AMP::LinearAlgebra::VectorData & ) const override;
82 const AMP::LinearAlgebra::VectorData & ) const override;
85 const AMP::Scalar & ) const override;
86};
87
88
89} // namespace AMP::LinearAlgebra
90
91#endif
An AMP Vector that uses Tpetra for parallel data management, linear algebra, etc.
Scalar localL2Norm(const AMP::LinearAlgebra::VectorData &x) const override
Return local discrete -norm of this vector.
void setMin(const Scalar &alpha, VectorData &z) override
modify vector to set .
void axpby(const Scalar &alpha, const Scalar &beta, const VectorData &x, VectorData &y) override
Set this vector alpha * x + this. .
void abs(const VectorData &x, VectorData &z) override
Set this to the component-wise absolute value of a vector. .
Scalar localMin(const AMP::LinearAlgebra::VectorData &) const override
Return the local minimum value of the vector. .
void multiply(const VectorData &x, const VectorData &y, VectorData &z) override
Component-wise multiply one vector with another. For Vectors, .
std::shared_ptr< VectorOperations > cloneOperations() const override
Clone the operations.
void scale(const Scalar &alpha, VectorData &x) override
Scale a vector. For Vectors, .
void copyCast(const VectorData &, VectorData &) override
Set vector equal to x (with different precision) For Vectors, .
Scalar localL1Norm(const AMP::LinearAlgebra::VectorData &x) const override
Return local discrete -norm of this vector.
Scalar maxNorm(const VectorData &x) const override
Return the -norm of this vector.
void axpy(const Scalar &alpha, const VectorData &x, const VectorData &y, VectorData &z) override
Set this vector to alpha * x + y. .
std::string VectorOpName() const override
Get the type name.
void zero(VectorData &x) override
Set vector entries (including ghosts) to zero.
Scalar localWrmsNormMask(const AMP::LinearAlgebra::VectorData &, const AMP::LinearAlgebra::VectorData &, const AMP::LinearAlgebra::VectorData &) const override
Return a weighted norm of a subset of a vector.
void reciprocal(const VectorData &x, VectorData &y) override
Set this to the component-wise reciprocal of a vector. .
void setMax(const Scalar &alpha, VectorData &z) override
modify vector to set .
Scalar localMaxNorm(const AMP::LinearAlgebra::VectorData &x) const override
Return the local -norm of this vector.
Scalar localSum(const AMP::LinearAlgebra::VectorData &) const override
Return the local sum of the vector.
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 .
Scalar L2Norm(const VectorData &x) const override
Return discrete -norm of this vector.
Scalar max(const VectorData &x) const override
Return the maximum value of the vector. .
void scale(const Scalar &alpha, const VectorData &x, VectorData &y) override
Set vector equal to scaled input. For Vectors, .
Scalar dot(const VectorData &x, const VectorData &y) const override
Return the dot product of this vector with the argument vector.
Scalar localMinQuotient(const AMP::LinearAlgebra::VectorData &, const AMP::LinearAlgebra::VectorData &) const override
Returns the local minimum of the quotient of two vectors:
void subtract(const VectorData &x, const VectorData &y, VectorData &z) override
Subtracts one vector from another. For Vectors, .
Scalar localMax(const AMP::LinearAlgebra::VectorData &) const override
Return the local maximum value of the vector. .
Scalar L1Norm(const VectorData &x) const override
Return discrete -norm of this vector.
void divide(const VectorData &x, const VectorData &y, VectorData &z) override
Component-wise divide one vector by another. 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. .
bool localEquals(const AMP::LinearAlgebra::VectorData &, const AMP::LinearAlgebra::VectorData &, const AMP::Scalar &) const override
Determine if the local portion of two vectors are equal using an absolute tolerance.
Scalar localDot(const AMP::LinearAlgebra::VectorData &x, const VectorData &y) const override
Return the local dot product of this vector with the argument vector.
Scalar min(const VectorData &x) const override
Return the minimum value of the vector. .
void add(const VectorData &x, const VectorData &y, VectorData &z) override
Adds two vectors. For Vectors, .
void addScalar(const VectorData &, const Scalar &, VectorData &) override
set vector to .
Scalar localWrmsNorm(const AMP::LinearAlgebra::VectorData &, const AMP::LinearAlgebra::VectorData &) const override
Return a weighted norm of a vector.
void setRandomValues(VectorData &x) override
Set data in this vector to random values.
void copy(const VectorData &x, VectorData &z) override
Set vector equal to x For Vectors, .
A class used to hold vector data.
Definition VectorData.h:38
A class used to hold vector operations.
Scalar is a class used to store a scalar variable that may be different types/precision.
Definition Scalar.h:21
#define AMP_ERROR(MSG)
Throw error.
MueLu::GlobalOrdinal GO
MueLu::LocalOrdinal LO



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