Epetra Package Browser (Single Doxygen Collection)  Development
Epetra_Export.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_EXPORT_H
45 #define EPETRA_EXPORT_H
46 
47 #include "Epetra_Object.h"
48 #include "Epetra_BlockMap.h"
49 
50 class Epetra_Distributor;
51 class Epetra_Import;
53 
62 class EPETRA_LIB_DLL_EXPORT Epetra_Export: public Epetra_Object {
63  friend class Epetra_Import;
64  public:
65 
67 
232 
234  Epetra_Export(const Epetra_Export& Exporter);
235 
237  Epetra_Export(const Epetra_Import& Exporter);
238 
240  virtual ~Epetra_Export(void);
241 
243  int NumSameIDs() const {return(NumSameIDs_);};
244 
246  int NumPermuteIDs() const {return(NumPermuteIDs_);};
247 
249  int * PermuteFromLIDs () const {return(PermuteFromLIDs_);};
251  int * PermuteToLIDs () const {return(PermuteToLIDs_);};
252 
254  int NumRemoteIDs() const {return(NumRemoteIDs_);};
255 
257  int * RemoteLIDs() const {return(RemoteLIDs_);};
258 
260  int NumExportIDs () const {return(NumExportIDs_);};
261 
263  int * ExportLIDs () const {return(ExportLIDs_);};
264 
266  int * ExportPIDs () const {return(ExportPIDs_);};
267 
269  int NumSend() const {return(NumSend_);};
270 
272  int NumRecv() const {return(NumRecv_);};
273 
275  const Epetra_BlockMap & SourceMap() const {return(SourceMap_);};
276 
278  const Epetra_BlockMap & TargetMap() const {return(TargetMap_);};
279 
280  Epetra_Distributor & Distributor() const {return(*Distor_);};
281 
283 
284  virtual void Print(std::ostream & os) const;
286  protected:
287 
288  friend class Epetra_BlockMap;
289 
290  private:
292 
295 
301  int * RemoteLIDs_;
302 
304  int * ExportLIDs_;
305  int * ExportPIDs_;
306 
307  int NumSend_;
308  int NumRecv_;
309 
311 
312  template<typename int_type>
313  void Construct(const Epetra_BlockMap & SourceMap, const Epetra_BlockMap & TargetMap);
314 
315 };
316 
317 #endif /* EPETRA_EXPORT_H */
Epetra_Object
Epetra_Object: The base Epetra class.
Definition: Epetra_Object.h:57
Epetra_Import::RemoteLIDs_
int * RemoteLIDs_
Definition: Epetra_Import.h:329
Epetra_Export::PermuteFromLIDs
int * PermuteFromLIDs() const
List of elements in the source map that are permuted.
Definition: Epetra_Export.h:249
Epetra_Export::RemoteLIDs_
int * RemoteLIDs_
Definition: Epetra_Export.h:301
Epetra_Export::PermuteToLIDs
int * PermuteToLIDs() const
List of elements in the target map that are permuted.
Definition: Epetra_Export.h:251
Epetra_Export::ExportLIDs
int * ExportLIDs() const
List of elements that will be sent to other processors.
Definition: Epetra_Export.h:263
Epetra_Import::NumExportIDs_
int NumExportIDs_
Definition: Epetra_Import.h:331
Epetra_Export::Distor_
Epetra_Distributor * Distor_
Definition: Epetra_Export.h:310
Epetra_Export::TargetMap_
Epetra_BlockMap TargetMap_
Definition: Epetra_Export.h:293
Epetra_Import::PermuteFromLIDs_
int * PermuteFromLIDs_
Definition: Epetra_Import.h:327
Epetra_Export::PermuteToLIDs_
int * PermuteToLIDs_
Definition: Epetra_Export.h:298
Epetra_Export::NumRemoteIDs
int NumRemoteIDs() const
Returns the number of elements that are not on the calling processor.
Definition: Epetra_Export.h:254
Epetra_Export::NumRecv_
int NumRecv_
Definition: Epetra_Export.h:308
Epetra_Import::Distor_
Epetra_Distributor * Distor_
Definition: Epetra_Import.h:338
Epetra_Import::NumSameIDs_
int NumSameIDs_
Definition: Epetra_Import.h:324
Epetra_Import::SourceMap_
Epetra_BlockMap SourceMap_
Definition: Epetra_Import.h:322
Epetra_Import::ExportLIDs_
int * ExportLIDs_
Definition: Epetra_Import.h:332
Epetra_Object::operator=
Epetra_Object & operator=(const Epetra_Object &src)
Definition: Epetra_Object.h:164
Epetra_Export::NumSameIDs
int NumSameIDs() const
Returns the number of elements that are identical between the source and target maps,...
Definition: Epetra_Export.h:243
Epetra_Export::NumRemoteIDs_
int NumRemoteIDs_
Definition: Epetra_Export.h:300
Epetra_Export::NumPermuteIDs_
int NumPermuteIDs_
Definition: Epetra_Export.h:297
Epetra_Import::NumRemoteIDs_
int NumRemoteIDs_
Definition: Epetra_Import.h:328
Epetra_Export::SourceMap_
Epetra_BlockMap SourceMap_
Definition: Epetra_Export.h:294
Epetra_Export::PermuteFromLIDs_
int * PermuteFromLIDs_
Definition: Epetra_Export.h:299
Epetra_Object::Print
virtual void Print(std::ostream &os) const
Print object to an output stream Print method.
Definition: Epetra_Object.cpp:97
Epetra_Export::NumSend_
int NumSend_
Definition: Epetra_Export.h:307
Epetra_Import::ExportPIDs_
int * ExportPIDs_
Definition: Epetra_Import.h:333
Epetra_Import::SourceMap
const Epetra_BlockMap & SourceMap() const
Returns the SourceMap used to construct this importer.
Definition: Epetra_Import.h:294
Epetra_Export::NumSend
int NumSend() const
Total number of elements to be sent.
Definition: Epetra_Export.h:269
Epetra_Import::PermuteToLIDs_
int * PermuteToLIDs_
Definition: Epetra_Import.h:326
Epetra_Export::RemoteLIDs
int * RemoteLIDs() const
List of elements in the target map that are coming from other processors.
Definition: Epetra_Export.h:257
Epetra_BlockMap.h
Epetra_BlockMap
Epetra_BlockMap: A class for partitioning block element vectors and matrices.
Definition: Epetra_BlockMap.h:194
Epetra_Export::NumExportIDs_
int NumExportIDs_
Definition: Epetra_Export.h:303
Epetra_Export::NumSameIDs_
int NumSameIDs_
Definition: Epetra_Export.h:296
Epetra_Import::NumPermuteIDs_
int NumPermuteIDs_
Definition: Epetra_Import.h:325
Epetra_Import::TargetMap_
Epetra_BlockMap TargetMap_
Definition: Epetra_Import.h:321
Epetra_Export::TargetMap
const Epetra_BlockMap & TargetMap() const
Returns the TargetMap used to construct this exporter.
Definition: Epetra_Export.h:278
Epetra_Export::ExportPIDs
int * ExportPIDs() const
List of processors to which elements will be sent, ExportLIDs() [i] will be sent to processor ExportP...
Definition: Epetra_Export.h:266
Epetra_Export::NumRecv
int NumRecv() const
Total number of elements to be received.
Definition: Epetra_Export.h:272
Epetra_Export::SourceMap
const Epetra_BlockMap & SourceMap() const
Returns the SourceMap used to construct this exporter.
Definition: Epetra_Export.h:275
Epetra_Import::Epetra_Export
friend class Epetra_Export
Definition: Epetra_Import.h:64
Epetra_Import::TargetMap
const Epetra_BlockMap & TargetMap() const
Returns the TargetMap used to construct this importer.
Definition: Epetra_Import.h:297
Epetra_Export::ExportPIDs_
int * ExportPIDs_
Definition: Epetra_Export.h:305
Epetra_Export::NumPermuteIDs
int NumPermuteIDs() const
Returns the number of elements that are local to the calling processor, but not part of the first Num...
Definition: Epetra_Export.h:246
Epetra_Distributor
Epetra_Distributor: The Epetra Gather/Scatter Setup Base Class.
Definition: Epetra_Distributor.h:61
Epetra_Export::NumExportIDs
int NumExportIDs() const
Returns the number of elements that must be sent by the calling processor to other processors.
Definition: Epetra_Export.h:260
Epetra_Import::NumRecv_
int NumRecv_
Definition: Epetra_Import.h:336
Epetra_Object.h
Epetra_Export
Epetra_Export: This class builds an export object for efficient exporting of off-processor elements.
Definition: Epetra_Export.h:62
Epetra_Export::ExportLIDs_
int * ExportLIDs_
Definition: Epetra_Export.h:304
Epetra_Export::Distributor
Epetra_Distributor & Distributor() const
Definition: Epetra_Export.h:280
Epetra_Import
Epetra_Import: This class builds an import object for efficient importing of off-processor elements.
Definition: Epetra_Import.h:63
Epetra_Import::NumSend_
int NumSend_
Definition: Epetra_Import.h:335