Thyra
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
core
src
support
operator_vector
adapter_support
Thyra_DetachedSpmdVectorView.hpp
1
// @HEADER
2
// *****************************************************************************
3
// Thyra: Interfaces and Support for Abstract Numerical Algorithms
4
//
5
// Copyright 2004 NTESS and the Thyra contributors.
6
// SPDX-License-Identifier: BSD-3-Clause
7
// *****************************************************************************
8
// @HEADER
9
10
#ifndef THYRA_DETACHED_SPMD_VECTOR_VIEW_HPP
11
#define THYRA_DETACHED_SPMD_VECTOR_VIEW_HPP
12
13
14
#include "Thyra_SpmdVectorBase.hpp"
15
#include "Teuchos_Assert.hpp"
16
17
18
namespace
Thyra {
19
20
29
template
<
class
Scalar>
30
class
ConstDetachedSpmdVectorView
{
31
public
:
33
ConstDetachedSpmdVectorView
(
const
Teuchos::RCP
<
const
VectorBase<Scalar>
> &v)
34
{
35
using
Teuchos::rcp_dynamic_cast;
36
if
(!is_null(v)) {
37
const
RCP<const SpmdVectorBase<Scalar>
> spmd_v =
38
rcp_dynamic_cast<const SpmdVectorBase<Scalar> >(v,
true
);
39
v_ = spmd_v;
40
sv_ = spmd_v->getLocalSubVector();
41
}
42
else
{
43
v_ = Teuchos::null;
44
sv_ =
RTOpPack::ConstSubVectorView<Scalar>
();
45
}
46
}
47
48
~ConstDetachedSpmdVectorView
()
49
{}
50
51
const
RCP<const SpmdVectorSpaceBase<Scalar>
>
spmdSpace
()
const
52
{
if
(!is_null(v_))
return
v_->spmdSpace();
return
Teuchos::null; }
53
54
const
RTOpPack::ConstSubVectorView<Scalar>
&
sv
()
const
{
return
sv_; }
56
Teuchos_Ordinal
globalOffset
()
const
{
return
sv_.globalOffset(); }
58
Teuchos_Ordinal
subDim
()
const
{
return
sv_.subDim(); }
60
const
ArrayRCP<const Scalar>
values
()
const
{
return
sv_.values(); }
62
ptrdiff_t
stride
()
const
{
return
sv_.stride(); }
64
const
Scalar&
operator[]
(Teuchos_Ordinal i)
const
{
return
sv_[i]; }
66
const
Scalar&
operator()
(Teuchos_Ordinal i)
const
{
return
sv_(i); }
67
private
:
68
Teuchos::RCP<const SpmdVectorBase<Scalar>
> v_;
69
RTOpPack::ConstSubVectorView<Scalar>
sv_;
70
// Not defined and not to be called
71
ConstDetachedSpmdVectorView
();
72
ConstDetachedSpmdVectorView
(
const
ConstDetachedSpmdVectorView<Scalar>
&);
73
ConstDetachedSpmdVectorView<Scalar>
& operator==(
74
const
ConstDetachedSpmdVectorView<Scalar>
&);
75
};
76
77
86
template
<
class
Scalar>
87
class
DetachedSpmdVectorView
{
88
public
:
90
DetachedSpmdVectorView
(
const
Teuchos::RCP
<
VectorBase<Scalar>
> &v)
91
{
92
using
Teuchos::rcp_dynamic_cast;
93
if
(!is_null(v)) {
94
const
RCP<SpmdVectorBase<Scalar>
> spmd_v =
95
rcp_dynamic_cast<SpmdVectorBase<Scalar> >(v,
true
);
96
v_ = spmd_v;
97
sv_ = spmd_v->getNonconstLocalSubVector();
98
}
99
else
{
100
v_ = Teuchos::null;
101
sv_ =
RTOpPack::SubVectorView<Scalar>
();
102
}
103
}
104
105
~DetachedSpmdVectorView
()
106
{}
107
108
const
RCP<const SpmdVectorSpaceBase<Scalar>
>
spmdSpace
()
const
109
{
if
(!is_null(v_))
return
v_->spmdSpace();
return
Teuchos::null; }
110
111
const
RTOpPack::SubVectorView<Scalar>
&
sv
()
const
{
return
sv_; }
113
Teuchos_Ordinal
globalOffset
()
const
{
return
sv_.globalOffset(); }
115
Teuchos_Ordinal
subDim
()
const
{
return
sv_.subDim(); }
117
const
ArrayRCP<const Scalar>
values
()
const
{
return
sv_.values(); }
119
ptrdiff_t
stride
()
const
{
return
sv_.stride(); }
121
Scalar&
operator[]
(Teuchos_Ordinal i)
const
{
return
sv_[i]; }
123
Scalar&
operator()
(Teuchos_Ordinal i)
const
{
return
sv_(i); }
124
private
:
125
Teuchos::RCP<SpmdVectorBase<Scalar>
> v_;
126
RTOpPack::SubVectorView<Scalar>
sv_;
127
// Not defined and not to be called
128
DetachedSpmdVectorView
();
129
DetachedSpmdVectorView
(
const
DetachedSpmdVectorView<Scalar>
&);
130
DetachedSpmdVectorView<Scalar>
& operator==(
131
const
DetachedSpmdVectorView<Scalar>
&);
132
};
133
134
135
}
// namespace Thyra
136
137
138
#endif
// THYRA_DETACHED_SPMD_VECTOR_VIEW_HPP
RTOpPack::ConstSubVectorView
RTOpPack::SubVectorView
Teuchos::ArrayRCP
Teuchos::RCP
Thyra::ConstDetachedSpmdVectorView
Create an explicit detached non-mutable (const) view of all of the local elements on this process of ...
Definition
Thyra_DetachedSpmdVectorView.hpp:30
Thyra::ConstDetachedSpmdVectorView::~ConstDetachedSpmdVectorView
~ConstDetachedSpmdVectorView()
Definition
Thyra_DetachedSpmdVectorView.hpp:48
Thyra::ConstDetachedSpmdVectorView::sv
const RTOpPack::ConstSubVectorView< Scalar > & sv() const
Definition
Thyra_DetachedSpmdVectorView.hpp:54
Thyra::ConstDetachedSpmdVectorView::values
const ArrayRCP< const Scalar > values() const
Definition
Thyra_DetachedSpmdVectorView.hpp:60
Thyra::ConstDetachedSpmdVectorView::operator[]
const Scalar & operator[](Teuchos_Ordinal i) const
Definition
Thyra_DetachedSpmdVectorView.hpp:64
Thyra::ConstDetachedSpmdVectorView::operator()
const Scalar & operator()(Teuchos_Ordinal i) const
Definition
Thyra_DetachedSpmdVectorView.hpp:66
Thyra::ConstDetachedSpmdVectorView::stride
ptrdiff_t stride() const
Definition
Thyra_DetachedSpmdVectorView.hpp:62
Thyra::ConstDetachedSpmdVectorView::subDim
Teuchos_Ordinal subDim() const
Definition
Thyra_DetachedSpmdVectorView.hpp:58
Thyra::ConstDetachedSpmdVectorView::spmdSpace
const RCP< const SpmdVectorSpaceBase< Scalar > > spmdSpace() const
Definition
Thyra_DetachedSpmdVectorView.hpp:51
Thyra::ConstDetachedSpmdVectorView::ConstDetachedSpmdVectorView
ConstDetachedSpmdVectorView(const Teuchos::RCP< const VectorBase< Scalar > > &v)
Definition
Thyra_DetachedSpmdVectorView.hpp:33
Thyra::ConstDetachedSpmdVectorView::globalOffset
Teuchos_Ordinal globalOffset() const
Definition
Thyra_DetachedSpmdVectorView.hpp:56
Thyra::DetachedSpmdVectorView
Create an explicit detached mutable (non-const) view of all of the local elements on this process of ...
Definition
Thyra_DetachedSpmdVectorView.hpp:87
Thyra::DetachedSpmdVectorView::globalOffset
Teuchos_Ordinal globalOffset() const
Definition
Thyra_DetachedSpmdVectorView.hpp:113
Thyra::DetachedSpmdVectorView::DetachedSpmdVectorView
DetachedSpmdVectorView(const Teuchos::RCP< VectorBase< Scalar > > &v)
Definition
Thyra_DetachedSpmdVectorView.hpp:90
Thyra::DetachedSpmdVectorView::operator()
Scalar & operator()(Teuchos_Ordinal i) const
Definition
Thyra_DetachedSpmdVectorView.hpp:123
Thyra::DetachedSpmdVectorView::sv
const RTOpPack::SubVectorView< Scalar > & sv() const
Definition
Thyra_DetachedSpmdVectorView.hpp:111
Thyra::DetachedSpmdVectorView::stride
ptrdiff_t stride() const
Definition
Thyra_DetachedSpmdVectorView.hpp:119
Thyra::DetachedSpmdVectorView::operator[]
Scalar & operator[](Teuchos_Ordinal i) const
Definition
Thyra_DetachedSpmdVectorView.hpp:121
Thyra::DetachedSpmdVectorView::values
const ArrayRCP< const Scalar > values() const
Definition
Thyra_DetachedSpmdVectorView.hpp:117
Thyra::DetachedSpmdVectorView::subDim
Teuchos_Ordinal subDim() const
Definition
Thyra_DetachedSpmdVectorView.hpp:115
Thyra::DetachedSpmdVectorView::~DetachedSpmdVectorView
~DetachedSpmdVectorView()
Definition
Thyra_DetachedSpmdVectorView.hpp:105
Thyra::DetachedSpmdVectorView::spmdSpace
const RCP< const SpmdVectorSpaceBase< Scalar > > spmdSpace() const
Definition
Thyra_DetachedSpmdVectorView.hpp:108
Thyra::VectorBase
Abstract interface for finite-dimensional dense vectors.
Definition
Thyra_VectorBase.hpp:115
Generated by
1.17.0