Xpetra Version of the Day
Loading...
Searching...
No Matches
Xpetra_Vector.hpp
Go to the documentation of this file.
1// @HEADER
2//
3// ***********************************************************************
4//
5// Xpetra: A linear algebra interface package
6// Copyright 2012 Sandia Corporation
7//
8// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
9// the U.S. Government retains certain rights in this software.
10//
11// Redistribution and use in source and binary forms, with or without
12// modification, are permitted provided that the following conditions are
13// met:
14//
15// 1. Redistributions of source code must retain the above copyright
16// notice, this list of conditions and the following disclaimer.
17//
18// 2. Redistributions in binary form must reproduce the above copyright
19// notice, this list of conditions and the following disclaimer in the
20// documentation and/or other materials provided with the distribution.
21//
22// 3. Neither the name of the Corporation nor the names of the
23// contributors may be used to endorse or promote products derived from
24// this software without specific prior written permission.
25//
26// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
27// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
29// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
30// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
31// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
32// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
33// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
34// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
35// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
36// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37//
38// Questions? Contact
39// Jonathan Hu (jhu@sandia.gov)
40// Andrey Prokopenko (aprokop@sandia.gov)
41// Ray Tuminaro (rstumin@sandia.gov)
42//
43// ***********************************************************************
44//
45// @HEADER
46#ifndef XPETRA_VECTOR_HPP
47#define XPETRA_VECTOR_HPP
48
49/* this file is automatically generated - do not edit (see script/interfaces.py) */
50
51#include "Xpetra_ConfigDefs.hpp"
52#include "Xpetra_MultiVector.hpp"
53
54namespace Xpetra {
55
56 template <class Scalar,
57 class LocalOrdinal,
58 class GlobalOrdinal,
60 class Vector
61 : public virtual MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node >
62 {
63
64 public:
65
66 using scalar_type = Scalar;
67 using local_ordinal_type = LocalOrdinal;
68 using global_ordinal_type = GlobalOrdinal;
69 using node_type = Node;
70
71
72 using MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node >::dot; // overloading, not hiding
73 using MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node >::norm1; // overloading, not hiding
74 using MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node >::norm2; // overloading, not hiding
75 using MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node >::normInf; // overloading, not hiding
76 using MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node >::meanValue; // overloading, not hiding
77 using MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node >::replaceGlobalValue; // overloading, not hiding
78 using MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node >::sumIntoGlobalValue; // overloading, not hiding
79 using MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node >::replaceLocalValue; // overloading, not hiding
80 using MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node >::sumIntoLocalValue; // overloading, not hiding
81
82
84
85 template<class TargetDeviceType, class AccessType>
86 typename std::conditional<
87 std::is_same<
88 typename dual_view_type::t_dev_um::execution_space::memory_space,
89 typename TargetDeviceType::memory_space>::value,
90 typename dual_view_type::t_dev_um,
91 typename dual_view_type::t_host_um>::type
92 getLocalView (AccessType access_type) const {
93 return this->MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node >::template getLocalView<TargetDeviceType>(access_type);
94 }
95
97
98
100 virtual ~Vector() { }
101
103
105
106
108 virtual void replaceGlobalValue(GlobalOrdinal globalRow, const Scalar &value)= 0;
109
111 virtual void sumIntoGlobalValue(GlobalOrdinal globalRow, const Scalar &value)= 0;
112
114 virtual void replaceLocalValue(LocalOrdinal myRow, const Scalar &value)= 0;
115
117 virtual void sumIntoLocalValue(LocalOrdinal myRow, const Scalar &value)= 0;
118
120
122
123
126
129
132
135
137 virtual Scalar meanValue() const = 0;
138
140
142
143
145 virtual std::string description() const = 0;
146
149
151
152 }; // Vector class
153} // Xpetra namespace
154
155#define XPETRA_VECTOR_SHORT
156#endif // XPETRA_VECTOR_HPP
static const EVerbosityLevel verbLevel_default
Kokkos::DualView< impl_scalar_type **, Kokkos::LayoutStride, typename node_type::device_type, Kokkos::MemoryUnmanaged > dual_view_type
virtual Scalar dot(const Vector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &a) const =0
Computes dot product of this Vector against input Vector x.
std::conditional< std::is_same< typenamedual_view_type::t_dev_um::execution_space::memory_space, typenameTargetDeviceType::memory_space >::value, typenamedual_view_type::t_dev_um, typenamedual_view_type::t_host_um >::type getLocalView(AccessType access_type) const
virtual ~Vector()
Destructor.
virtual void sumIntoGlobalValue(GlobalOrdinal globalRow, const Scalar &value)=0
Adds specified value to existing value at the specified location.
virtual Teuchos::ScalarTraits< Scalar >::magnitudeType norm1() const =0
Return 1-norm of this Vector.
Xpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node >::dual_view_type dual_view_type
virtual void replaceLocalValue(LocalOrdinal myRow, const Scalar &value)=0
Replace current value at the specified location with specified values.
virtual std::string description() const =0
Return a simple one-line description of this object.
virtual void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel=Teuchos::Describable::verbLevel_default) const =0
Print the object with some verbosity level to an FancyOStream object.
virtual Scalar meanValue() const =0
Compute mean (average) value of this Vector.
virtual void replaceGlobalValue(GlobalOrdinal globalRow, const Scalar &value)=0
Replace current value at the specified location with specified value.
GlobalOrdinal global_ordinal_type
virtual void sumIntoLocalValue(LocalOrdinal myRow, const Scalar &value)=0
Adds specified value to existing value at the specified location.
virtual Teuchos::ScalarTraits< Scalar >::magnitudeType normInf() const =0
Compute Inf-norm of this Vector.
virtual Teuchos::ScalarTraits< Scalar >::magnitudeType norm2() const =0
Compute 2-norm of this Vector.
LocalOrdinal local_ordinal_type
Xpetra namespace