Epetra Package Browser (Single Doxygen Collection) Development
Loading...
Searching...
No Matches
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"
51class Epetra_Map;
52
54
122
123//=========================================================================
124class 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
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
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_;
307};
308
309#endif /* EPETRA_INTVECTOR_H */
Epetra_CombineMode
Epetra_DataAccess
Epetra_BlockMap: A class for partitioning block element vectors and matrices.
const Epetra_BlockMap & Map() const
Returns the address of the Epetra_BlockMap for this multi-vector.
virtual int CheckSizes(const Epetra_SrcDistObject &Source)=0
Allows the source and target (this) objects to be compared for compatibility, return nonzero if not.
virtual int UnpackAndCombine(const Epetra_SrcDistObject &Source, int NumImportIDs, int *ImportLIDs, int LenImports, char *Imports, int &SizeOfPacket, Epetra_Distributor &Distor, Epetra_CombineMode CombineMode, const Epetra_OffsetIndex *Indexor)=0
Perform any unpacking and combining after call to DoTransfer().
virtual int PackAndPrepare(const Epetra_SrcDistObject &Source, int NumExportIDs, int *ExportLIDs, int &LenExports, char *&Exports, int &SizeOfPacket, int *Sizes, bool &VarSizes, Epetra_Distributor &Distor)=0
Perform any packing or preparation required for call to DoTransfer().
virtual int CopyAndPermute(const Epetra_SrcDistObject &Source, int NumSameIDs, int NumPermuteIDs, int *PermuteToLIDs, int *PermuteFromLIDs, const Epetra_OffsetIndex *Indexor, Epetra_CombineMode CombineMode=Zero)=0
Perform ID copies and permutations that are on processor.
Epetra_DistObject & operator=(const Epetra_DistObject &src)
Epetra_DistObject(const Epetra_BlockMap &Map)
Basic Epetra_DistObject constuctor.
virtual void Print(std::ostream &os) const
Print method.
Epetra_Distributor: The Epetra Gather/Scatter Setup Base Class.
int ExtractView(int **V) const
Set user-provided address of V.
long long GlobalLength64() const
Epetra_IntVector(const Epetra_BlockMap &Map, bool zeroOut=true)
Basic Epetra_IntVector constuctor.
int MaxValue()
Find maximum value.
int PutValue(int Value)
Set all elements of the vector to Value.
int MyLength() const
Returns the local vector length on the calling processor of vectors in the multi-vector.
int ExtractCopy(int *V) const
Put vector values into user-provided array.
int MinValue()
Find minimum value.
int * Values() const
Returns a pointer to an array containing the values of this vector.
int GlobalLength() const
Returns the global vector length of vectors in the multi-vector.
Epetra_Map: A class for partitioning vectors and matrices.
Definition Epetra_Map.h:119
Epetra_OffsetIndex: This class builds index for efficient mapping of data from one Epetra_CrsGraph ba...
Epetra_SrcDistObject: A class for supporting flexible source distributed objects for import/export op...