Epetra Package Browser (Single Doxygen Collection)
Development
Toggle main menu visibility
Loading...
Searching...
No Matches
src
Epetra_IntVector.h
Go to the documentation of this file.
1
/*
2
//@HEADER
3
// ************************************************************************
4
//
5
// Epetra: Linear Algebra Services Package
6
// Copyright 2011 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 Michael A. Heroux (maherou@sandia.gov)
39
//
40
// ************************************************************************
41
//@HEADER
42
*/
43
44
#ifndef EPETRA_INTVECTOR_H
45
#define EPETRA_INTVECTOR_H
46
47
#include "
Epetra_ConfigDefs.h
"
48
#include "
Epetra_DistObject.h
"
49
#include "
Epetra_BlockMap.h
"
50
#include "
Epetra_Distributor.h
"
51
class
Epetra_Map
;
52
54
122
123
//=========================================================================
124
class
EPETRA_LIB_DLL_EXPORT
Epetra_IntVector
:
public
Epetra_DistObject
{
125
126
public
:
127
129
130
147
Epetra_IntVector
(
const
Epetra_BlockMap
&
Map
,
bool
zeroOut =
true
);
148
150
151
Epetra_IntVector
(
const
Epetra_IntVector
& Source);
152
154
166
Epetra_IntVector
(
Epetra_DataAccess
CV,
const
Epetra_BlockMap
&
Map
,
int
*V);
167
169
virtual
~Epetra_IntVector
();
171
172
174
175
176
int
PutValue
(
int
Value);
178
179
181
182
183
185
191
int
ExtractCopy
(
int
*V)
const
;
192
194
200
int
ExtractView
(
int
**V)
const
;
202
204
205
209
int
MaxValue
();
210
212
215
int
MinValue
();
216
218
220
221
223
229
Epetra_IntVector
& operator = (
const
Epetra_IntVector
& Source);
230
232
235
int
& operator [] (
int
index) {
return
Values_
[index]; }
237
240
const
int
& operator [] (
int
index)
const
{
return
Values_
[index]; }
242
244
245
247
int
*
Values
()
const
{
return
(
Values_
);};
248
250
int
MyLength
()
const
{
return
(
Map
().NumMyPoints());};
251
253
#ifndef EPETRA_NO_32BIT_GLOBAL_INDICES
254
int
GlobalLength
()
const
{
return
(
Map
().NumGlobalPoints());};
255
#endif
256
257
long
long
GlobalLength64
()
const
{
return
(
Map
().NumGlobalPoints64());};
259
261
262
264
virtual
void
Print(std::ostream & os)
const
;
266
private
:
267
268
int
AllocateForCopy();
269
int
DoCopy(
int
* V);
270
int
AllocateForView();
271
int
DoView(
int
* V);
272
273
// Routines to implement Epetra_DistObject virtual methods
274
int
CheckSizes(
const
Epetra_SrcDistObject
& A);
275
276
int
CopyAndPermute(
const
Epetra_SrcDistObject
& Source,
277
int
NumSameIDs,
278
int
NumPermuteIDs,
279
int
* PermuteToLIDs,
280
int
* PermuteFromLIDs,
281
const
Epetra_OffsetIndex
* Indexor,
282
Epetra_CombineMode
CombineMode =
Zero
);
283
284
int
PackAndPrepare(
const
Epetra_SrcDistObject
& Source,
285
int
NumExportIDs,
286
int
* ExportLIDs,
287
int
& LenExports,
288
char
* & Exports,
289
int
& SizeOfPacket,
290
int
* Sizes,
291
bool
& VarSizes,
292
Epetra_Distributor
& Distor);
293
294
int
UnpackAndCombine(
const
Epetra_SrcDistObject
& Source,
295
int
NumImportIDs,
296
int
* ImportLIDs,
297
int
LenImports,
298
char
* Imports,
299
int
& SizeOfPacket,
300
Epetra_Distributor
& Distor,
301
Epetra_CombineMode
CombineMode,
302
const
Epetra_OffsetIndex
* Indexor);
303
304
int
*
Values_
;
305
bool
UserAllocated_
;
306
bool
Allocated_
;
307
};
308
309
#endif
/* EPETRA_INTVECTOR_H */
Epetra_BlockMap.h
Epetra_CombineMode
Epetra_CombineMode
Definition
Epetra_CombineMode.h:64
Zero
@ Zero
Definition
Epetra_CombineMode.h:66
Epetra_ConfigDefs.h
Epetra_DataAccess
Epetra_DataAccess
Definition
Epetra_DataAccess.h:55
Epetra_DistObject.h
Epetra_Distributor.h
Epetra_BlockMap
Epetra_BlockMap: A class for partitioning block element vectors and matrices.
Definition
Epetra_BlockMap.h:194
Epetra_DistObject::Map
const Epetra_BlockMap & Map() const
Returns the address of the Epetra_BlockMap for this multi-vector.
Definition
Epetra_DistObject.h:192
Epetra_DistObject::Epetra_DistObject
Epetra_DistObject(const Epetra_BlockMap &Map)
Basic Epetra_DistObject constuctor.
Definition
Epetra_DistObject.cpp:54
Epetra_Distributor
Epetra_Distributor: The Epetra Gather/Scatter Setup Base Class.
Definition
Epetra_Distributor.h:61
Epetra_IntVector::ExtractView
int ExtractView(int **V) const
Set user-provided address of V.
Definition
Epetra_IntVector.cpp:143
Epetra_IntVector::Values_
int * Values_
Definition
Epetra_IntVector.h:304
Epetra_IntVector::GlobalLength64
long long GlobalLength64() const
Definition
Epetra_IntVector.h:257
Epetra_IntVector::Epetra_IntVector
Epetra_IntVector(const Epetra_BlockMap &Map, bool zeroOut=true)
Basic Epetra_IntVector constuctor.
Definition
Epetra_IntVector.cpp:49
Epetra_IntVector::MaxValue
int MaxValue()
Find maximum value.
Definition
Epetra_IntVector.cpp:156
Epetra_IntVector::PutValue
int PutValue(int Value)
Set all elements of the vector to Value.
Definition
Epetra_IntVector.cpp:150
Epetra_IntVector::MyLength
int MyLength() const
Returns the local vector length on the calling processor of vectors in the multi-vector.
Definition
Epetra_IntVector.h:250
Epetra_IntVector::ExtractCopy
int ExtractCopy(int *V) const
Put vector values into user-provided array.
Definition
Epetra_IntVector.cpp:135
Epetra_IntVector::MinValue
int MinValue()
Find minimum value.
Definition
Epetra_IntVector.cpp:167
Epetra_IntVector::Values
int * Values() const
Returns a pointer to an array containing the values of this vector.
Definition
Epetra_IntVector.h:247
Epetra_IntVector::GlobalLength
int GlobalLength() const
Returns the global vector length of vectors in the multi-vector.
Definition
Epetra_IntVector.h:254
Epetra_IntVector::UserAllocated_
bool UserAllocated_
Definition
Epetra_IntVector.h:305
Epetra_IntVector::Allocated_
bool Allocated_
Definition
Epetra_IntVector.h:306
Epetra_Map
Epetra_Map: A class for partitioning vectors and matrices.
Definition
Epetra_Map.h:119
Epetra_OffsetIndex
Epetra_OffsetIndex: This class builds index for efficient mapping of data from one Epetra_CrsGraph ba...
Definition
Epetra_OffsetIndex.h:60
Epetra_SrcDistObject
Epetra_SrcDistObject: A class for supporting flexible source distributed objects for import/export op...
Definition
Epetra_SrcDistObject.h:63
Generated by
1.18.0