Epetra Package Browser (Single Doxygen Collection) Development
Loading...
Searching...
No Matches
Epetra_Comm.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_COMM_H
45#define EPETRA_COMM_H
46
47#include "Epetra_ConfigDefs.h"
48#include "Epetra_Object.h"
49
52class Epetra_BlockMap;
53
55
73class EPETRA_LIB_DLL_EXPORT Epetra_Comm {
74
75 public:
77
78
83 virtual Epetra_Comm * Clone() const = 0;
85 virtual ~Epetra_Comm() {};
87
89
90
93 virtual void Barrier() const = 0;
95
97
98
110 virtual int Broadcast(double * MyVals, int Count, int Root) const = 0;
111
113
124 virtual int Broadcast(int * MyVals, int Count, int Root) const = 0;
125
127
138 virtual int Broadcast(long * MyVals, int Count, int Root) const = 0;
139
141
152 virtual int Broadcast(long long * MyVals, int Count, int Root) const = 0;
153
155
166 virtual int Broadcast(char * MyVals, int Count, int Root) const = 0;
167
169
171
172
183 virtual int GatherAll(double * MyVals, double * AllVals, int Count) const = 0;
184
186
196 virtual int GatherAll(int * MyVals, int * AllVals, int Count) const = 0;
197
199
209 virtual int GatherAll(long * MyVals, long * AllVals, int Count) const = 0;
210
212
222 virtual int GatherAll(long long * MyVals, long long * AllVals, int Count) const = 0;
224
226
227
239 virtual int SumAll(double * PartialSums, double * GlobalSums, int Count) const = 0;
240
242
252 virtual int SumAll(int * PartialSums, int * GlobalSums, int Count) const = 0;
253
255
265 virtual int SumAll(long * PartialSums, long * GlobalSums, int Count) const = 0;
266
268
278 virtual int SumAll(long long * PartialSums, long long * GlobalSums, int Count) const = 0;
280
282
283
294 virtual int MaxAll(double * PartialMaxs, double * GlobalMaxs, int Count) const = 0;
295
297
307 virtual int MaxAll(int * PartialMaxs, int * GlobalMaxs, int Count) const = 0;
308
310
320 virtual int MaxAll(long * PartialMaxs, long * GlobalMaxs, int Count) const = 0;
321
323
333 virtual int MaxAll(long long * PartialMaxs, long long * GlobalMaxs, int Count) const = 0;
334
336
346 virtual int MinAll(double * PartialMins, double * GlobalMins, int Count) const = 0;
347
349
359 virtual int MinAll(int * PartialMins, int * GlobalMins, int Count) const = 0;
360
362
372 virtual int MinAll(long * PartialMins, long * GlobalMins, int Count) const = 0;
373
384 virtual int MinAll(long long * PartialMins, long long * GlobalMins, int Count) const = 0;
386
388
389
400 virtual int ScanSum(double * MyVals, double * ScanSums, int Count) const = 0;
401
403
413 virtual int ScanSum(int * MyVals, int * ScanSums, int Count) const = 0;
414
416
426 virtual int ScanSum(long * MyVals, long * ScanSums, int Count) const = 0;
427
429
439 virtual int ScanSum(long long * MyVals, long long * ScanSums, int Count) const = 0;
441
443
444
446
449 virtual int MyPID() const = 0;
450
452
455 virtual int NumProc() const = 0;
457
459
460
463// CreateDirectory is defined in Winbase.h as a macro!
464#ifdef CreateDirectory
465#undef CreateDirectory
466#endif
467 virtual Epetra_Directory * CreateDirectory(const Epetra_BlockMap & Map) const = 0;
469
471
472
473 virtual void PrintInfo(std::ostream & os) const = 0;
475};
476#endif /* EPETRA_COMM_H */
Epetra_BlockMap: A class for partitioning block element vectors and matrices.
Epetra_Comm: The Epetra Communication Abstract Base Class.
Definition Epetra_Comm.h:73
virtual int MaxAll(double *PartialMaxs, double *GlobalMaxs, int Count) const =0
Epetra_Comm Global Max function.
virtual int NumProc() const =0
Returns total number of processes.
virtual int Broadcast(double *MyVals, int Count, int Root) const =0
Epetra_Comm Broadcast function.
virtual int MaxAll(int *PartialMaxs, int *GlobalMaxs, int Count) const =0
Epetra_Comm Global Max function.
virtual ~Epetra_Comm()
Epetra_Comm Destructor.
Definition Epetra_Comm.h:85
virtual Epetra_Directory * CreateDirectory(const Epetra_BlockMap &Map) const =0
Create a directory object for the given Epetra_BlockMap.
virtual int MaxAll(long long *PartialMaxs, long long *GlobalMaxs, int Count) const =0
Epetra_Comm Global Max function.
virtual int GatherAll(double *MyVals, double *AllVals, int Count) const =0
Epetra_Comm All Gather function.
virtual int MinAll(long *PartialMins, long *GlobalMins, int Count) const =0
Epetra_Comm Global Min function.
virtual int SumAll(long *PartialSums, long *GlobalSums, int Count) const =0
Epetra_Comm Global Sum function.
virtual int GatherAll(long *MyVals, long *AllVals, int Count) const =0
Epetra_Comm All Gather function.
virtual void PrintInfo(std::ostream &os) const =0
Print object to an output stream.
virtual int Broadcast(char *MyVals, int Count, int Root) const =0
Epetra_Comm Broadcast function.
virtual int MinAll(double *PartialMins, double *GlobalMins, int Count) const =0
Epetra_Comm Global Min function.
virtual int MyPID() const =0
Return my process ID.
virtual int SumAll(long long *PartialSums, long long *GlobalSums, int Count) const =0
Epetra_Comm Global Sum function.
virtual int ScanSum(long *MyVals, long *ScanSums, int Count) const =0
Epetra_Comm Scan Sum function.
virtual int GatherAll(long long *MyVals, long long *AllVals, int Count) const =0
Epetra_Comm All Gather function.
virtual int Broadcast(int *MyVals, int Count, int Root) const =0
Epetra_Comm Broadcast function.
virtual Epetra_Comm * Clone() const =0
Epetra_Comm clone constructor.
virtual int ScanSum(double *MyVals, double *ScanSums, int Count) const =0
Epetra_Comm Scan Sum function.
virtual int GatherAll(int *MyVals, int *AllVals, int Count) const =0
Epetra_Comm All Gather function.
virtual int SumAll(int *PartialSums, int *GlobalSums, int Count) const =0
Epetra_Comm Global Sum function.
virtual Epetra_Distributor * CreateDistributor() const =0
Create a distributor object.
virtual int Broadcast(long long *MyVals, int Count, int Root) const =0
Epetra_Comm Broadcast function.
virtual int MinAll(int *PartialMins, int *GlobalMins, int Count) const =0
Epetra_Comm Global Min function.
virtual int MinAll(long long *PartialMins, long long *GlobalMins, int Count) const =0
virtual int MaxAll(long *PartialMaxs, long *GlobalMaxs, int Count) const =0
Epetra_Comm Global Max function.
virtual int ScanSum(long long *MyVals, long long *ScanSums, int Count) const =0
Epetra_Comm Scan Sum function.
virtual int Broadcast(long *MyVals, int Count, int Root) const =0
Epetra_Comm Broadcast function.
virtual void Barrier() const =0
Epetra_Comm Barrier function.
virtual int ScanSum(int *MyVals, int *ScanSums, int Count) const =0
Epetra_Comm Scan Sum function.
virtual int SumAll(double *PartialSums, double *GlobalSums, int Count) const =0
Epetra_Comm Global Sum function.
Epetra_Directory: This class is a pure virtual class whose interface allows Epetra_Map and Epetr_Bloc...
Epetra_Distributor: The Epetra Gather/Scatter Setup Base Class.