Xpetra
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
Xpetra_EpetraMap.cpp
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
#include "
Xpetra_ConfigDefs.hpp
"
47
48
#ifdef HAVE_XPETRA_EPETRA
49
50
#include "
Xpetra_EpetraMap.hpp
"
51
52
namespace
Xpetra
{
53
54
template
<
class
GlobalOrdinal,
class
Node>
55
const
Epetra_Map
&
toEpetra
(
const
Map<int,GlobalOrdinal, Node>
&map)
56
{
57
const
EpetraMapT<GlobalOrdinal, Node>
& epetraMap =
dynamic_cast<
const
EpetraMapT<GlobalOrdinal, Node>
&
>
(*map.
getMap
());
58
return
epetraMap.
getEpetra_Map
();
59
}
60
61
template
<
class
GlobalOrdinal,
class
Node>
62
const
Epetra_Map
&
toEpetra
(
const
RCP
<
const
Map<int,GlobalOrdinal,Node>
> &map)
63
{
64
XPETRA_RCP_DYNAMIC_CAST
(
const
EpetraMapT<GlobalOrdinal XPETRA_COMMA Node>
, map->
getMap
(), epetraMap,
"toEpetra"
);
65
return
epetraMap->getEpetra_Map();
66
}
67
68
template
<
class
GlobalOrdinal,
class
Node>
69
const
RCP< const Xpetra::Map<int, GlobalOrdinal, Node>
>
toXpetra
(
const
Epetra_BlockMap
&map)
70
{
71
RCP<const Epetra_BlockMap>
m =
rcp
(
new
Epetra_BlockMap
(map));
72
return
rcp
(
new
EpetraMapT<GlobalOrdinal, Node>
(m) );
73
}
74
75
76
77
#ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES
78
79
#ifdef HAVE_XPETRA_TPETRA
80
#include "TpetraCore_config.h"
81
#if ((defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_OPENMP)) || \
82
(!defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_SERIAL)))
83
template
const
RCP< const Map<int, int, Xpetra::EpetraNode >
>
toXpetra<int, Xpetra::EpetraNode>
(
const
Epetra_BlockMap
&map);
84
template
const
Epetra_Map
&
toEpetra<int, Xpetra::EpetraNode >
(
const
RCP
<
const
Map<int, int, Xpetra::EpetraNode >
> &map);
85
template
const
Epetra_Map
&
toEpetra<int, Xpetra::EpetraNode >
(
const
Map< int, int, Xpetra::EpetraNode>
& map);
86
#endif
87
#ifdef HAVE_TPETRA_INST_SERIAL
88
//template class EpetraMapT<int, Tpetra::KokkosCompat::KokkosSerialWrapperNode >;
89
template
const
RCP< const Map<int, int, Tpetra::KokkosCompat::KokkosSerialWrapperNode >
>
toXpetra<int, Tpetra::KokkosCompat::KokkosSerialWrapperNode>
(
const
Epetra_BlockMap
&map);
90
template
const
Epetra_Map
&
toEpetra<int, Tpetra::KokkosCompat::KokkosSerialWrapperNode >
(
const
RCP
<
const
Map<int, int, Tpetra::KokkosCompat::KokkosSerialWrapperNode >
> & map);
91
template
const
Epetra_Map
&
toEpetra<int, Tpetra::KokkosCompat::KokkosSerialWrapperNode >
(
const
Map< int, int, Tpetra::KokkosCompat::KokkosSerialWrapperNode>
& map);
92
#endif
93
#ifdef HAVE_TPETRA_INST_PTHREAD
94
//template class EpetraMapT<int, Tpetra::KokkosCompat::KokkosThreadsWrapperNode>;
95
template
const
RCP< const Map<int, int, Tpetra::KokkosCompat::KokkosThreadsWrapperNode >
>
toXpetra<int, Tpetra::KokkosCompat::KokkosThreadsWrapperNode>
(
const
Epetra_BlockMap
&map);
96
template
const
Epetra_Map
&
toEpetra<int, Tpetra::KokkosCompat::KokkosThreadsWrapperNode >
(
const
RCP
<
const
Map<int, int, Tpetra::KokkosCompat::KokkosThreadsWrapperNode >
> &map);
97
template
const
Epetra_Map
&
toEpetra<int, Tpetra::KokkosCompat::KokkosThreadsWrapperNode >
(
const
Map< int, int, Tpetra::KokkosCompat::KokkosThreadsWrapperNode>
& map);
98
#endif
99
#ifdef HAVE_TPETRA_INST_OPENMP
100
//template class EpetraMapT<int, Tpetra::KokkosCompat::KokkosOpenMPWrapperNode >;
101
template
const
RCP< const Map<int, int, Tpetra::KokkosCompat::KokkosOpenMPWrapperNode >
>
toXpetra<int, Tpetra::KokkosCompat::KokkosOpenMPWrapperNode>
(
const
Epetra_BlockMap
&map);
102
template
const
Epetra_Map
&
toEpetra<int, Tpetra::KokkosCompat::KokkosOpenMPWrapperNode >
(
const
RCP
<
const
Map<int, int, Tpetra::KokkosCompat::KokkosOpenMPWrapperNode >
> &map);
103
template
const
Epetra_Map
&
toEpetra<int, Tpetra::KokkosCompat::KokkosOpenMPWrapperNode >
(
const
Map< int, int, Tpetra::KokkosCompat::KokkosOpenMPWrapperNode>
& map);
104
#endif
105
#ifdef HAVE_TPETRA_INST_CUDA
106
typedef
Tpetra::KokkosCompat::KokkosCudaWrapperNode default_node_type;
107
//template class EpetraMapT<int, default_node_type >;
108
template
const
RCP< const Map<int, int, default_node_type >
>
toXpetra<int, default_node_type>
(
const
Epetra_BlockMap
&map);
109
template
const
Epetra_Map
&
toEpetra<int, default_node_type >
(
const
RCP
<
const
Map<int, int, default_node_type >
> &map);
110
template
const
Epetra_Map
&
toEpetra<int, default_node_type >
(
const
Map< int, int, default_node_type>
& map);
111
#endif
112
#ifdef HAVE_TPETRA_INST_HIP
113
typedef
Tpetra::KokkosCompat::KokkosHIPWrapperNode default_node_type;
114
//template class EpetraMapT<int, default_node_type >;
115
template
const
RCP< const Map<int, int, default_node_type >
>
toXpetra<int, default_node_type>
(
const
Epetra_BlockMap
&map);
116
template
const
Epetra_Map
&
toEpetra<int, default_node_type >
(
const
RCP
<
const
Map<int, int, default_node_type >
> &map);
117
template
const
Epetra_Map
&
toEpetra<int, default_node_type >
(
const
Map< int, int, default_node_type>
& map);
118
#endif
119
#else
120
// Tpetra is disabled and Kokkos not available: use dummy node type
121
typedef
Xpetra::EpetraNode
default_node_type;
122
template
const
RCP< const Map<int, int, default_node_type >
>
toXpetra<int, default_node_type>
(
const
Epetra_BlockMap
&map);
123
template
const
Epetra_Map
&
toEpetra<int, default_node_type >
(
const
RCP
<
const
Map<int, int, default_node_type >
> &map);
124
template
const
Epetra_Map
&
toEpetra<int, default_node_type >
(
const
Map< int, int, default_node_type>
& map);
125
#endif
// HAVE_XPETRA_TPETRA
126
127
#endif
// XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES
128
129
130
131
#ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES
132
133
#ifdef HAVE_XPETRA_TPETRA
134
#include "TpetraCore_config.h"
135
#if ((defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_OPENMP)) || \
136
(!defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_SERIAL)))
137
template
const
RCP< const Map<int, long long, Xpetra::EpetraNode >
>
toXpetra<long long, Xpetra::EpetraNode>
(
const
Epetra_BlockMap
&map);
138
template
const
Epetra_Map
&
toEpetra<long long, Xpetra::EpetraNode >
(
const
RCP
<
const
Map<int, long long, Xpetra::EpetraNode >
> &map);
139
template
const
Epetra_Map
&
toEpetra<long long, Xpetra::EpetraNode >
(
const
Map< int, long long, Xpetra::EpetraNode>
& map);
140
#endif
141
142
#ifdef HAVE_TPETRA_INST_SERIAL
143
//template class EpetraMapT<long long, Tpetra::KokkosCompat::KokkosSerialWrapperNode >;
144
template
const
RCP< const Map<int, long long, Tpetra::KokkosCompat::KokkosSerialWrapperNode >
>
toXpetra<long long, Tpetra::KokkosCompat::KokkosSerialWrapperNode>
(
const
Epetra_BlockMap
&map);
145
template
const
Epetra_Map
&
toEpetra<long long, Tpetra::KokkosCompat::KokkosSerialWrapperNode >
(
const
RCP
<
const
Map<int, long long, Tpetra::KokkosCompat::KokkosSerialWrapperNode >
> & map);
146
template
const
Epetra_Map
&
toEpetra<long long, Tpetra::KokkosCompat::KokkosSerialWrapperNode >
(
const
Map< int, long long, Tpetra::KokkosCompat::KokkosSerialWrapperNode>
& map);
147
#endif
148
149
#ifdef HAVE_TPETRA_INST_PTHREAD
150
//template class EpetraMapT<long long, Tpetra::KokkosCompat::KokkosThreadsWrapperNode>;
151
template
const
RCP< const Map<int, long long, Tpetra::KokkosCompat::KokkosThreadsWrapperNode >
>
toXpetra<long long, Tpetra::KokkosCompat::KokkosThreadsWrapperNode>
(
const
Epetra_BlockMap
&map);
152
template
const
Epetra_Map
&
toEpetra<long long, Tpetra::KokkosCompat::KokkosThreadsWrapperNode >
(
const
RCP
<
const
Map<int, long long, Tpetra::KokkosCompat::KokkosThreadsWrapperNode >
> &map);
153
template
const
Epetra_Map
&
toEpetra<long long, Tpetra::KokkosCompat::KokkosThreadsWrapperNode >
(
const
Map< int, long long, Tpetra::KokkosCompat::KokkosThreadsWrapperNode>
& map);
154
#endif
155
156
#ifdef HAVE_TPETRA_INST_OPENMP
157
//template class EpetraMapT<long long, Tpetra::KokkosCompat::KokkosOpenMPWrapperNode >;
158
template
const
RCP< const Map<int, long long, Tpetra::KokkosCompat::KokkosOpenMPWrapperNode >
>
toXpetra<long long, Tpetra::KokkosCompat::KokkosOpenMPWrapperNode>
(
const
Epetra_BlockMap
&map);
159
template
const
Epetra_Map
&
toEpetra<long long, Tpetra::KokkosCompat::KokkosOpenMPWrapperNode >
(
const
RCP
<
const
Map<int, long long, Tpetra::KokkosCompat::KokkosOpenMPWrapperNode >
> &map);
160
template
const
Epetra_Map
&
toEpetra<long long, Tpetra::KokkosCompat::KokkosOpenMPWrapperNode >
(
const
Map< int, long long, Tpetra::KokkosCompat::KokkosOpenMPWrapperNode>
& map);
161
#endif
162
163
#ifdef HAVE_TPETRA_INST_CUDA
164
typedef
Tpetra::KokkosCompat::KokkosCudaWrapperNode default_node_type;
165
//template class EpetraMapT<long long, default_node_type >;
166
template
const
RCP< const Map<int, long long, default_node_type >
>
toXpetra<long long, default_node_type>
(
const
Epetra_BlockMap
&map);
167
template
const
Epetra_Map
&
toEpetra<long long, default_node_type >
(
const
RCP
<
const
Map<int, long long, default_node_type >
> &map);
168
template
const
Epetra_Map
&
toEpetra<long long, default_node_type >
(
const
Map< int, long long, default_node_type>
& map);
169
#endif
170
171
#ifdef HAVE_TPETRA_INST_HIP
172
typedef
Tpetra::KokkosCompat::KokkosHIPWrapperNode default_node_type;
173
//template class EpetraMapT<long long, default_node_type >;
174
template
const
RCP< const Map<int, long long, default_node_type >
>
toXpetra<long long, default_node_type>
(
const
Epetra_BlockMap
&map);
175
template
const
Epetra_Map
&
toEpetra<long long, default_node_type >
(
const
RCP
<
const
Map<int, long long, default_node_type >
> &map);
176
template
const
Epetra_Map
&
toEpetra<long long, default_node_type >
(
const
Map< int, long long, default_node_type>
& map);
177
#endif
178
179
#else
180
// Tpetra is disabled and Kokkos not available: use dummy node type
181
typedef
Xpetra::EpetraNode
default_node_type;
182
template
const
RCP< const Map<int, long long, default_node_type >
>
toXpetra<long long, default_node_type>
(
const
Epetra_BlockMap
&map);
183
template
const
Epetra_Map
&
toEpetra<long long, default_node_type >
(
const
RCP
<
const
Map<int, long long, default_node_type >
> &map);
184
template
const
Epetra_Map
&
toEpetra<long long, default_node_type >
(
const
Map< int, long long, default_node_type>
& map);
185
#endif
// HAVE_XPETRA_TPETRA
186
187
#endif
// HAVE_XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES
188
189
}
190
191
#endif
// HAVE_XPETRA_EPETRA
192
Xpetra_ConfigDefs.hpp
Xpetra_EpetraMap.hpp
XPETRA_RCP_DYNAMIC_CAST
#define XPETRA_RCP_DYNAMIC_CAST(type, obj, newObj, exceptionMsg)
Definition
Xpetra_Exceptions.hpp:65
Epetra_BlockMap
Epetra_Map
Teuchos::RCP
Xpetra::EpetraMapT
Definition
Xpetra_EpetraMap.hpp:82
Xpetra::EpetraMapT::getEpetra_Map
const Epetra_Map & getEpetra_Map() const
Definition
Xpetra_EpetraMap.hpp:241
Xpetra::Map
Definition
Xpetra_Map_decl.hpp:89
Xpetra::Map::getMap
virtual RCP< const Xpetra::Map< LocalOrdinal, GlobalOrdinal, Node > > getMap() const
Definition
Xpetra_Map_def.hpp:64
Xpetra
Xpetra namespace
Definition
Xpetra_BlockedCrsMatrix.hpp:89
Xpetra::EpetraNode
Tpetra::KokkosCompat::KokkosSerialWrapperNode EpetraNode
Definition
Xpetra_Map_decl.hpp:71
Xpetra::toEpetra
const Epetra_CrsGraph & toEpetra(const RCP< const CrsGraph< int, GlobalOrdinal, Node > > &graph)
Definition
Xpetra_EpetraCrsGraph.cpp:57
Xpetra::toEpetra< long long, Xpetra::EpetraNode >
template const Epetra_CrsGraph & toEpetra< long long, Xpetra::EpetraNode >(const RCP< const CrsGraph< int, long long, Xpetra::EpetraNode > > &graph)
Xpetra::toXpetra
RCP< const CrsGraph< int, GlobalOrdinal, Node > > toXpetra(const Epetra_CrsGraph &g)
Definition
Xpetra_EpetraCrsGraph.cpp:65
Xpetra::rcp
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
Xpetra::toXpetra< long long, Xpetra::EpetraNode >
template RCP< const CrsGraph< int, long long, Xpetra::EpetraNode > > toXpetra< long long, Xpetra::EpetraNode >(const Epetra_CrsGraph &g)
Xpetra::toEpetra< int, Xpetra::EpetraNode >
template const Epetra_CrsGraph & toEpetra< int, Xpetra::EpetraNode >(const RCP< const CrsGraph< int, int, Xpetra::EpetraNode > > &graph)
Xpetra::toXpetra< int, Xpetra::EpetraNode >
template RCP< const CrsGraph< int, int, Xpetra::EpetraNode > > toXpetra< int, Xpetra::EpetraNode >(const Epetra_CrsGraph &g)
src
Map
Xpetra_EpetraMap.cpp
Generated by
1.17.0