Thyra
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
adapters
tpetra
src
Thyra_TpetraVectorSpace_decl.hpp
1
// @HEADER
2
// ***********************************************************************
3
//
4
// Thyra: Interfaces and Support for Abstract Numerical Algorithms
5
// Copyright (2004) Sandia Corporation
6
//
7
// Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
8
// license for use of this work by or on behalf of the U.S. Government.
9
//
10
// Redistribution and use in source and binary forms, with or without
11
// modification, are permitted provided that the following conditions are
12
// met:
13
//
14
// 1. Redistributions of source code must retain the above copyright
15
// notice, this list of conditions and the following disclaimer.
16
//
17
// 2. Redistributions in binary form must reproduce the above copyright
18
// notice, this list of conditions and the following disclaimer in the
19
// documentation and/or other materials provided with the distribution.
20
//
21
// 3. Neither the name of the Corporation nor the names of the
22
// contributors may be used to endorse or promote products derived from
23
// this software without specific prior written permission.
24
//
25
// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36
//
37
// Questions? Contact Roscoe A. Bartlett (bartlettra@ornl.gov)
38
//
39
// ***********************************************************************
40
// @HEADER
41
42
43
#ifndef THYRA_TPETRA_VECTOR_SPACE_DECL_HPP
44
#define THYRA_TPETRA_VECTOR_SPACE_DECL_HPP
45
46
47
#include "Thyra_SpmdVectorSpaceDefaultBase.hpp"
48
#include "Tpetra_Map.hpp"
49
#include "Tpetra_MultiVector.hpp"
50
51
52
namespace
Thyra {
53
54
59
template
<
class
Scalar,
class
LocalOrdinal,
class
GlobalOrdinal,
class
Node>
60
class
TpetraVectorSpace :
public
SpmdVectorSpaceDefaultBase
<Scalar>
61
{
62
public
:
63
65
typedef
TpetraVectorSpace<Scalar,LocalOrdinal,GlobalOrdinal,Node>
this_t
;
66
69
71
static
RCP<TpetraVectorSpace<Scalar,LocalOrdinal,GlobalOrdinal,Node>
>
create
();
72
74
void
initialize
(
75
const
RCP
<
const
Tpetra::Map<LocalOrdinal,GlobalOrdinal,Node> > &tpetraMap
76
);
77
79
81
82
87
RCP<TpetraVectorSpace<Scalar,LocalOrdinal,GlobalOrdinal,Node>
>
88
createLocallyReplicatedVectorSpace
(
int
size)
const
;
89
91
94
97
bool
hasInCoreView
(
98
const
Range1D
& rng,
const
EViewType
viewType,
const
EStrideType
strideType
99
)
const
;
101
RCP< const VectorSpaceBase<Scalar>
>
clone
()
const
;
102
104
RCP<const Tpetra::Map<LocalOrdinal,GlobalOrdinal,Node>
>
105
getTpetraMap
()
const
;
106
108
109
protected
:
110
113
115
RCP<VectorBase<Scalar>
>
116
createMember
()
const
;
118
RCP<MultiVectorBase<Scalar>
>
119
createMembers
(
int
numMembers)
const
;
120
121
public
:
122
123
RCP<MultiVectorBase<Scalar>
>
124
createCachedMembersView
(
const
RTOpPack::SubMultiVectorView<Scalar>
&raw_mv )
const
;
125
126
RCP<const MultiVectorBase<Scalar>
>
127
createCachedMembersView
(
const
RTOpPack::ConstSubMultiVectorView<Scalar>
&raw_mv )
const
;
128
130
131
public
:
132
135
137
RCP<const Teuchos::Comm<Ordinal>
>
getComm
()
const
;
139
Ordinal
localSubDim
()
const
;
140
142
143
private
:
144
145
// //////////////////////////////////////
146
// Private data members
147
148
RCP<const Tpetra::Map<LocalOrdinal,GlobalOrdinal,Node>
> tpetraMap_;
149
mutable
RCP<TpetraVectorSpace<Scalar,LocalOrdinal,GlobalOrdinal,Node>
> tpetraDomainSpace_;
150
mutable
RCP<Tpetra::MultiVector<Scalar,LocalOrdinal,GlobalOrdinal,Node>
> tpetraMV_;
151
// The only reason Thyra needs this comm_ object is because Thyra
152
// uses Ordinal as the Comm template parameter, while Tpetra uses
153
// int. Ordinal is some 64-bit type, which doesn't make any sense,
154
// given that MPI implementations currently only allow 32-bit
155
// process ranks. This is why Thyra does not just use the Map's
156
// stored communicator.
157
RCP<const Teuchos::Comm<Ordinal>
> comm_;
158
RCP<this_t>
weakSelfPtr_;
159
160
// /////////////////////////////////////
161
// Private member functions
162
163
TpetraVectorSpace();
164
165
};
// end class TpetraVectorSpace
166
167
172
template
<
class
Scalar,
class
LocalOrdinal,
class
GlobalOrdinal,
class
Node>
173
RCP<TpetraVectorSpace<Scalar,LocalOrdinal,GlobalOrdinal,Node>
>
174
tpetraVectorSpace
(
175
const
RCP
<
const
Tpetra::Map<LocalOrdinal,GlobalOrdinal,Node> > &tpetraMap
176
)
177
{
178
RCP<TpetraVectorSpace<Scalar,LocalOrdinal,GlobalOrdinal,Node>
> vs =
179
TpetraVectorSpace<Scalar,LocalOrdinal,GlobalOrdinal,Node>::create
();
180
vs->initialize(tpetraMap);
181
return
vs;
182
}
183
184
185
}
// end namespace Thyra
186
187
188
#endif
// THYRA_TPETRA_VECTOR_SPACE_DECL_HPP
RTOpPack::ConstSubMultiVectorView
RTOpPack::SubMultiVectorView
Teuchos::RCP
Thyra::SpmdVectorSpaceDefaultBase::SpmdVectorSpaceDefaultBase
SpmdVectorSpaceDefaultBase()
Definition
Thyra_SpmdVectorSpaceDefaultBase_def.hpp:56
Thyra::TpetraVectorSpace::this_t
TpetraVectorSpace< Scalar, LocalOrdinal, GlobalOrdinal, Node > this_t
Definition
Thyra_TpetraVectorSpace_decl.hpp:65
Thyra::TpetraVectorSpace::createLocallyReplicatedVectorSpace
RCP< TpetraVectorSpace< Scalar, LocalOrdinal, GlobalOrdinal, Node > > createLocallyReplicatedVectorSpace(int size) const
Create Tpetra locally replicated vector space.
Definition
Thyra_TpetraVectorSpace_def.hpp:86
Thyra::TpetraVectorSpace::getTpetraMap
RCP< const Tpetra::Map< LocalOrdinal, GlobalOrdinal, Node > > getTpetraMap() const
Get the embedded Tpetra::Map.
Definition
Thyra_TpetraVectorSpace_def.hpp:282
Thyra::TpetraVectorSpace::tpetraVectorSpace
RCP< TpetraVectorSpace< Scalar, LocalOrdinal, GlobalOrdinal, Node > > tpetraVectorSpace(const RCP< const Tpetra::Map< LocalOrdinal, GlobalOrdinal, Node > > &tpetraMap)
Nonmember constructor that creats a serial vector space.
Definition
Thyra_TpetraVectorSpace_decl.hpp:174
Thyra::TpetraVectorSpace::hasInCoreView
bool hasInCoreView(const Range1D &rng, const EViewType viewType, const EStrideType strideType) const
Returns true if all the elements in rng are in this process.
Definition
Thyra_TpetraVectorSpace_def.hpp:259
Thyra::TpetraVectorSpace::localSubDim
Ordinal localSubDim() const
Definition
Thyra_TpetraVectorSpace_def.hpp:299
Thyra::TpetraVectorSpace::initialize
void initialize(const RCP< const Tpetra::Map< LocalOrdinal, GlobalOrdinal, Node > > &tpetraMap)
Initialize a serial space.
Definition
Thyra_TpetraVectorSpace_def.hpp:68
Thyra::TpetraVectorSpace::createCachedMembersView
RCP< MultiVectorBase< Scalar > > createCachedMembersView(const RTOpPack::SubMultiVectorView< Scalar > &raw_mv) const
Create a (possibly) cached multi-vector member that is a non-const view of raw multi-vector data....
Definition
Thyra_TpetraVectorSpace_def.hpp:157
Thyra::TpetraVectorSpace::clone
RCP< const VectorSpaceBase< Scalar > > clone() const
Definition
Thyra_TpetraVectorSpace_def.hpp:275
Thyra::TpetraVectorSpace::createMember
RCP< VectorBase< Scalar > > createMember() const
Definition
Thyra_TpetraVectorSpace_def.hpp:99
Thyra::TpetraVectorSpace::createMembers
RCP< MultiVectorBase< Scalar > > createMembers(int numMembers) const
Definition
Thyra_TpetraVectorSpace_def.hpp:112
Thyra::TpetraVectorSpace::getComm
RCP< const Teuchos::Comm< Ordinal > > getComm() const
Definition
Thyra_TpetraVectorSpace_def.hpp:292
Thyra::TpetraVectorSpace::create
static RCP< TpetraVectorSpace< Scalar, LocalOrdinal, GlobalOrdinal, Node > > create()
Create with weak ownership to self.
Definition
Thyra_TpetraVectorSpace_def.hpp:59
Thyra::EStrideType
EStrideType
Determine if data is unit stride or non-unit stride.
Definition
Thyra_OperatorVectorTypes.hpp:319
Thyra::EViewType
EViewType
Determines if a view is a direct view of data or a detached copy of data.
Definition
Thyra_OperatorVectorTypes.hpp:309
Thyra::Range1D
Teuchos::Range1D Range1D
Definition
Thyra_OperatorVectorTypes.hpp:97
Generated by
1.17.0