Thyra
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
core
src
support
operator_vector
adapter_support
Thyra_DefaultSpmdMultiVector_decl.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_Spmd_MULTI_VECTOR_STD_DECL_HPP
11
#define THYRA_Spmd_MULTI_VECTOR_STD_DECL_HPP
12
13
#include "Thyra_SpmdMultiVectorDefaultBase_decl.hpp"
14
15
16
namespace
Thyra {
17
18
35
template
<
class
Scalar>
36
class
DefaultSpmdMultiVector
:
virtual
public
SpmdMultiVectorDefaultBase
<Scalar> {
37
public
:
38
41
43
DefaultSpmdMultiVector
();
44
46
DefaultSpmdMultiVector
(
47
const
RCP
<
const
SpmdVectorSpaceBase<Scalar>
> &spmdRangeSpace,
48
const
RCP
<
const
ScalarProdVectorSpaceBase<Scalar>
> &domainSpace
49
);
50
52
DefaultSpmdMultiVector
(
53
const
RCP
<
const
SpmdVectorSpaceBase<Scalar>
> &spmdRangeSpace,
54
const
RCP
<
const
ScalarProdVectorSpaceBase<Scalar>
> &domainSpace,
55
const
ArrayRCP<Scalar>
&localValues,
56
const
Ordinal leadingDim = -1
57
);
58
74
void
initialize
(
75
const
RCP
<
const
SpmdVectorSpaceBase<Scalar>
> &spmdRangeSpace,
76
const
RCP
<
const
ScalarProdVectorSpaceBase<Scalar>
> &domainSpace
77
);
78
107
void
initialize
(
108
const
RCP
<
const
SpmdVectorSpaceBase<Scalar>
> &spmdRangeSpace,
109
const
RCP
<
const
ScalarProdVectorSpaceBase<Scalar>
> &domainSpace,
110
const
ArrayRCP<Scalar>
&localValues,
111
const
Ordinal leadingDim = -1
112
);
113
119
void
uninitialize
(
120
RCP
<
const
SpmdVectorSpaceBase<Scalar>
> *spmdRangeSpace = NULL,
121
RCP
<
const
ScalarProdVectorSpaceBase<Scalar>
> *domainSpace = NULL,
122
ArrayRCP<Scalar>
*localValues = NULL,
123
Ordinal *leadingDim = NULL
124
);
125
127
RCP< const ScalarProdVectorSpaceBase<Scalar>
>
128
domainScalarProdVecSpc
()
const
;
129
131
132
protected
:
133
136
137
RCP<VectorBase<Scalar>
>
nonconstColImpl
(Ordinal j);
139
RCP<const MultiVectorBase<Scalar>
>
140
contigSubViewImpl
(
const
Range1D
& colRng)
const
;
142
RCP<MultiVectorBase<Scalar>
>
143
nonconstContigSubViewImpl
(
const
Range1D
& colRng);
145
RCP<const MultiVectorBase<Scalar>
>
146
nonContigSubViewImpl
(
const
ArrayView<const int>
&cols)
const
;
148
RCP<MultiVectorBase<Scalar>
>
149
nonconstNonContigSubViewImpl
(
const
ArrayView<const int>
&cols);
151
154
155
RCP<const SpmdVectorSpaceBase<Scalar>
>
spmdSpaceImpl
()
const
;
157
void
getNonconstLocalMultiVectorDataImpl
(
158
const
Ptr
<
ArrayRCP<Scalar>
> &localValues,
const
Ptr<Ordinal>
&leadingDim
159
);
161
void
getLocalMultiVectorDataImpl
(
162
const
Ptr
<
ArrayRCP<const Scalar>
> &localValues,
const
Ptr<Ordinal>
&leadingDim
163
)
const
;
165
166
private
:
167
168
// ///////////////////////////////////////
169
// Private data members
170
171
RCP<const SpmdVectorSpaceBase<Scalar>
> spmdRangeSpace_;
172
RCP<const ScalarProdVectorSpaceBase<Scalar>
> domainSpace_;
173
ArrayRCP<Scalar>
localValues_;
174
Ordinal leadingDim_;
175
176
// ///////////////////////////////////////
177
// Private member functions
178
179
ArrayRCP<Scalar>
createContiguousCopy(
const
ArrayView<const int>
&cols)
const
;
180
181
public
:
182
183
#ifdef THYRA_DEBUG
184
// Unit testing sensing varaible
185
static
int
numSkipCopyBack;
186
#endif
187
188
};
// end class DefaultSpmdMultiVector
189
190
191
template
<
class
Scalar>
192
RCP<DefaultSpmdMultiVector<Scalar>
>
193
defaultSpmdMultiVector(
194
const
RCP
<
const
SpmdVectorSpaceBase<Scalar>
> &spmdRangeSpace,
195
const
RCP
<
const
ScalarProdVectorSpaceBase<Scalar>
> &domainSpace,
196
const
ArrayRCP<Scalar>
&localValues,
197
const
Ordinal leadingDim = -1
198
)
199
{
200
return
Teuchos::rcp
(
201
new
DefaultSpmdMultiVector<Scalar>
(
202
spmdRangeSpace, domainSpace, localValues, leadingDim
203
)
204
);
205
}
206
207
208
}
// end namespace Thyra
209
210
211
#endif
// THYRA_Spmd_MULTI_VECTOR_STD_DECL_HPP
Teuchos::ArrayRCP
Teuchos::ArrayView
Teuchos::Ptr
Teuchos::RCP
Thyra::DefaultSpmdMultiVector
Efficient concrete implementation subclass for SPMD multi-vectors.
Definition
Thyra_DefaultSpmdMultiVector_decl.hpp:36
Thyra::DefaultSpmdMultiVector::getLocalMultiVectorDataImpl
void getLocalMultiVectorDataImpl(const Ptr< ArrayRCP< const Scalar > > &localValues, const Ptr< Ordinal > &leadingDim) const
Definition
Thyra_DefaultSpmdMultiVector_def.hpp:337
Thyra::DefaultSpmdMultiVector::spmdSpaceImpl
RCP< const SpmdVectorSpaceBase< Scalar > > spmdSpaceImpl() const
Definition
Thyra_DefaultSpmdMultiVector_def.hpp:314
Thyra::DefaultSpmdMultiVector::DefaultSpmdMultiVector
DefaultSpmdMultiVector()
Construct to uninitialized.
Definition
Thyra_DefaultSpmdMultiVector_def.hpp:108
Thyra::DefaultSpmdMultiVector::uninitialize
void uninitialize(RCP< const SpmdVectorSpaceBase< Scalar > > *spmdRangeSpace=NULL, RCP< const ScalarProdVectorSpaceBase< Scalar > > *domainSpace=NULL, ArrayRCP< Scalar > *localValues=NULL, Ordinal *leadingDim=NULL)
Set to an uninitialized state.
Definition
Thyra_DefaultSpmdMultiVector_def.hpp:176
Thyra::DefaultSpmdMultiVector::nonconstNonContigSubViewImpl
RCP< MultiVectorBase< Scalar > > nonconstNonContigSubViewImpl(const ArrayView< const int > &cols)
Definition
Thyra_DefaultSpmdMultiVector_def.hpp:289
Thyra::DefaultSpmdMultiVector::nonconstColImpl
RCP< VectorBase< Scalar > > nonconstColImpl(Ordinal j)
Definition
Thyra_DefaultSpmdMultiVector_def.hpp:213
Thyra::DefaultSpmdMultiVector::contigSubViewImpl
RCP< const MultiVectorBase< Scalar > > contigSubViewImpl(const Range1D &colRng) const
Definition
Thyra_DefaultSpmdMultiVector_def.hpp:234
Thyra::DefaultSpmdMultiVector::getNonconstLocalMultiVectorDataImpl
void getNonconstLocalMultiVectorDataImpl(const Ptr< ArrayRCP< Scalar > > &localValues, const Ptr< Ordinal > &leadingDim)
Definition
Thyra_DefaultSpmdMultiVector_def.hpp:324
Thyra::DefaultSpmdMultiVector::nonconstContigSubViewImpl
RCP< MultiVectorBase< Scalar > > nonconstContigSubViewImpl(const Range1D &colRng)
Definition
Thyra_DefaultSpmdMultiVector_def.hpp:255
Thyra::DefaultSpmdMultiVector::initialize
void initialize(const RCP< const SpmdVectorSpaceBase< Scalar > > &spmdRangeSpace, const RCP< const ScalarProdVectorSpaceBase< Scalar > > &domainSpace)
Initialize only with vector spaces where storage is allocated internally..
Definition
Thyra_DefaultSpmdMultiVector_def.hpp:136
Thyra::DefaultSpmdMultiVector::nonContigSubViewImpl
RCP< const MultiVectorBase< Scalar > > nonContigSubViewImpl(const ArrayView< const int > &cols) const
Definition
Thyra_DefaultSpmdMultiVector_def.hpp:272
Thyra::DefaultSpmdMultiVector::domainScalarProdVecSpc
RCP< const ScalarProdVectorSpaceBase< Scalar > > domainScalarProdVecSpc() const
Definition
Thyra_DefaultSpmdMultiVector_def.hpp:199
Thyra::ScalarProdVectorSpaceBase
Forward decl.
Definition
Thyra_ScalarProdVectorSpaceBase_decl.hpp:53
Thyra::SpmdMultiVectorDefaultBase::SpmdMultiVectorDefaultBase
SpmdMultiVectorDefaultBase()
Definition
Thyra_SpmdMultiVectorDefaultBase_def.hpp:45
Thyra::SpmdVectorSpaceBase
Base abstract VectorSpaceBase class for all SPMD-based vector spaces.
Definition
Thyra_SpmdVectorSpaceBase_decl.hpp:100
Thyra::Range1D
Teuchos::Range1D Range1D
Definition
Thyra_OperatorVectorTypes.hpp:65
Teuchos::rcp
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
Generated by
1.17.0