EpetraExt Package Browser (Single Doxygen Collection)
Development
Toggle main menu visibility
Loading...
Searching...
No Matches
src
transform
EpetraExt_Permutation.h
Go to the documentation of this file.
1
//@HEADER
2
// ***********************************************************************
3
//
4
// EpetraExt: Epetra Extended - Linear Algebra Services Package
5
// Copyright (2011) Sandia Corporation
6
//
7
// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
8
// the U.S. Government retains certain rights in this software.
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 Michael A. Heroux (maherou@sandia.gov)
38
//
39
// ***********************************************************************
40
//@HEADER
41
42
#ifndef EpetraExt_PERMUTATION_H
43
#define EpetraExt_PERMUTATION_H
44
45
#include <
Epetra_ConfigDefs.h
>
46
#include <
Epetra_GIDTypeVector.h
>
47
48
#include <
EpetraExt_Transform.h
>
49
50
namespace
EpetraExt
{
51
116
template
<
typename
T,
typename
int
_type>
117
class
TPermutation
:
public
Epetra_GIDTypeVector
<int_type>::impl,
118
public
EpetraExt::StructuralSameTypeTransform
<T> {
119
public
:
131
TPermutation
(
Epetra_DataAccess
CV,
132
const
Epetra_BlockMap
& map,
133
int_type* permutation);
134
140
TPermutation
(
const
Epetra_BlockMap
& map);
141
143
TPermutation
(
const
TPermutation<T, int_type>
& src);
144
146
virtual
~TPermutation
();
147
148
typedef
typename
EpetraExt::SameTypeTransform<T>::TransformTypeRef
OutputRef
;
149
typedef
typename
EpetraExt::SameTypeTransform<T>::TransformTypeRef
InputRef
;
150
typedef
typename
EpetraExt::SameTypeTransform<T>::TransformTypePtr
OutputPtr
;
151
typedef
typename
EpetraExt::SameTypeTransform<T>::TransformTypePtr
InputPtr
;
152
170
OutputRef
operator()
(
InputRef
orig );
171
185
OutputRef
operator()
(
InputRef
orig,
186
bool
column_permutation );
187
188
private
:
189
TPermutation<T, int_type>
&
operator=
(
const
TPermutation<T, int_type>
& src)
190
{
191
//not currently supported
192
abort();
193
return
(*
this
);
194
}
195
196
bool
isTypeSupported
();
197
198
OutputPtr
newObj_
;
199
InputPtr
origObj_
;
200
};
201
202
#ifndef EPETRA_NO_32BIT_GLOBAL_INDICES
203
template
<
typename
T>
204
class
Permutation
:
public
TPermutation
<T, int> {
205
public
:
217
Permutation
(
Epetra_DataAccess
CV,
218
const
Epetra_BlockMap
& map,
219
int
* permutation)
220
:
TPermutation
<T, int>(CV, map, permutation)
221
{
222
}
223
229
Permutation
(
const
Epetra_BlockMap
& map)
230
:
TPermutation
<T, int>(map)
231
{
232
}
233
235
Permutation
(
const
Permutation<T>
& src)
236
:
TPermutation
<T, int>(src)
237
{
238
}
239
};
240
#endif
241
242
#ifndef EPETRA_NO_64BIT_GLOBAL_INDICES
243
244
template
<
typename
T>
245
class
Permutation64
:
public
TPermutation
<T, long long> {
246
public
:
258
Permutation64
(
Epetra_DataAccess
CV,
259
const
Epetra_BlockMap
& map,
260
long
long
* permutation)
261
:
TPermutation
<T, long long>(CV, map, permutation)
262
{
263
}
264
270
Permutation64
(
const
Epetra_BlockMap
& map)
271
:
TPermutation
<T, long long>(map)
272
{
273
}
274
276
Permutation64
(
const
Permutation64<T>
& src)
277
:
TPermutation
<T, long long>(src)
278
{
279
}
280
};
281
#endif
282
283
}
//namespace EpetraExt
284
285
#include <
EpetraExt_Permutation_impl.h
>
286
287
#endif
288
EpetraExt_Permutation_impl.h
EpetraExt_Transform.h
Epetra_ConfigDefs.h
Epetra_DataAccess
Epetra_DataAccess
Epetra_GIDTypeVector.h
EpetraExt::Permutation64::Permutation64
Permutation64(Epetra_DataAccess CV, const Epetra_BlockMap &map, long long *permutation)
Constructor.
Definition
EpetraExt_Permutation.h:258
EpetraExt::Permutation64::Permutation64
Permutation64(const Permutation64< T > &src)
Copy Constructor.
Definition
EpetraExt_Permutation.h:276
EpetraExt::Permutation64::Permutation64
Permutation64(const Epetra_BlockMap &map)
Constructor.
Definition
EpetraExt_Permutation.h:270
EpetraExt::Permutation::Permutation
Permutation(const Epetra_BlockMap &map)
Constructor.
Definition
EpetraExt_Permutation.h:229
EpetraExt::Permutation::Permutation
Permutation(const Permutation< T > &src)
Copy Constructor.
Definition
EpetraExt_Permutation.h:235
EpetraExt::Permutation::Permutation
Permutation(Epetra_DataAccess CV, const Epetra_BlockMap &map, int *permutation)
Constructor.
Definition
EpetraExt_Permutation.h:217
EpetraExt::SameTypeTransform::TransformTypePtr
T * TransformTypePtr
Definition
EpetraExt_Transform.h:274
EpetraExt::SameTypeTransform::TransformTypeRef
T & TransformTypeRef
Definition
EpetraExt_Transform.h:275
EpetraExt::StructuralSameTypeTransform
Definition
EpetraExt_Transform.h:282
EpetraExt::TPermutation::newObj_
OutputPtr newObj_
Definition
EpetraExt_Permutation.h:198
EpetraExt::TPermutation::InputRef
EpetraExt::SameTypeTransform< T >::TransformTypeRef InputRef
Definition
EpetraExt_Permutation.h:149
EpetraExt::TPermutation::origObj_
InputPtr origObj_
Definition
EpetraExt_Permutation.h:199
EpetraExt::TPermutation::operator=
TPermutation< T, int_type > & operator=(const TPermutation< T, int_type > &src)
Definition
EpetraExt_Permutation.h:189
EpetraExt::TPermutation::OutputRef
EpetraExt::SameTypeTransform< T >::TransformTypeRef OutputRef
Definition
EpetraExt_Permutation.h:148
EpetraExt::TPermutation::TPermutation
TPermutation(Epetra_DataAccess CV, const Epetra_BlockMap &map, int_type *permutation)
Constructor.
Definition
EpetraExt_Permutation_impl.h:431
EpetraExt::TPermutation::isTypeSupported
bool isTypeSupported()
Definition
EpetraExt_Permutation_impl.h:475
EpetraExt::TPermutation::InputPtr
EpetraExt::SameTypeTransform< T >::TransformTypePtr InputPtr
Definition
EpetraExt_Permutation.h:151
EpetraExt::TPermutation::operator()
OutputRef operator()(InputRef orig, bool column_permutation)
This method creates a new object which is a permuted copy of the input argument.
EpetraExt::TPermutation::~TPermutation
virtual ~TPermutation()
Destructor.
Definition
EpetraExt_Permutation_impl.h:469
EpetraExt::TPermutation::operator()
OutputRef operator()(InputRef orig)
This method creates a new object which is a permuted copy of the input argument.
EpetraExt::TPermutation::OutputPtr
EpetraExt::SameTypeTransform< T >::TransformTypePtr OutputPtr
Definition
EpetraExt_Permutation.h:150
Epetra_BlockMap
Epetra_GIDTypeVector
EpetraExt
EpetraExt::BlockCrsMatrix: A class for constructing a distributed block matrix.
Definition
EpetraExt_BlockCrsMatrix.cpp:46
Generated by
1.17.0