Epetra Package Browser (Single Doxygen Collection)  Development
Epetra_Import.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_IMPORT_H
45 #define EPETRA_IMPORT_H
46 
47 #include "Epetra_Object.h"
48 #include "Epetra_BlockMap.h"
49 class Epetra_Distributor;
50 class Epetra_Export;
51 
53 
63 class EPETRA_LIB_DLL_EXPORT Epetra_Import: public Epetra_Object {
64  friend class Epetra_Export;
65  public:
66 
68 
232 
234 
239  Epetra_Import( const Epetra_BlockMap & TargetMap, const Epetra_BlockMap & SourceMap, int NumRemotePIDs,const int * RemotePIDs);
240 
242 
247  Epetra_Import( const Epetra_BlockMap & TargetMap, const Epetra_BlockMap & SourceMap, int NumRemotePIDs,const int * RemotePIDs,
248  const int & NumExportIDs, const int * ExportLIDs, const int * ExportPIDs);
249 
250 
252  Epetra_Import(const Epetra_Import& Importer);
253 
255  Epetra_Import(const Epetra_Export& Exporter);
256 
257 
259  virtual ~Epetra_Import(void);
260 
262  int NumSameIDs() const {return(NumSameIDs_);};
263 
265  int NumPermuteIDs() const {return(NumPermuteIDs_);};
266 
268  int * PermuteFromLIDs () const {return(PermuteFromLIDs_);};
270  int * PermuteToLIDs () const {return(PermuteToLIDs_);};
271 
273  int NumRemoteIDs() const {return(NumRemoteIDs_);};
274 
276  int * RemoteLIDs() const {return(RemoteLIDs_);};
277 
279  int NumExportIDs () const {return(NumExportIDs_);};
280 
282  int * ExportLIDs () const {return(ExportLIDs_);};
283 
285  int * ExportPIDs () const {return(ExportPIDs_);};
286 
288  int NumSend() const {return(NumSend_);};
289 
291  int NumRecv() const {return(NumRecv_);};
292 
294  const Epetra_BlockMap & SourceMap() const {return(SourceMap_);};
295 
297  const Epetra_BlockMap & TargetMap() const {return(TargetMap_);};
298 
299  Epetra_Distributor & Distributor() const {return(*Distor_);};
300 
302 
303  virtual void Print(std::ostream & os) const;
305  protected:
306 
307  friend class Epetra_BlockMap;
308 
309  private:
311  {
312  (void)src;
313  //not currently supported
314  bool throw_error = true;
315  if (throw_error) {
316  throw ReportError("Epetra_Import::operator= not supported.",-1);
317  }
318  return(*this);
319  }
320 
323 
329  int * RemoteLIDs_;
330 
332  int * ExportLIDs_;
333  int * ExportPIDs_;
334 
335  int NumSend_;
336  int NumRecv_;
337 
339 
340 
341  template<typename int_type>
342  void Construct( const Epetra_BlockMap & targetMap, const Epetra_BlockMap & sourceMap, int NumRemotePIDs=-1, const int * UserRemotePIDs=0);
343 
344  template<typename int_type>
345  void Construct_Expert( const Epetra_BlockMap & TargetMap, const Epetra_BlockMap & SourceMap, int NumRemotePIDs,const int * RemotePIDs, const int & NumExportIDs, const int * ExportLIDs, const int * ExportPIDs);
346 
347 };
348 
349 #endif /* EPETRA_IMPORT_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::RemoteLIDs_
int * RemoteLIDs_
Definition: Epetra_Export.h:301
Epetra_Import::Distributor
Epetra_Distributor & Distributor() const
Definition: Epetra_Import.h:299
Epetra_Import::PermuteFromLIDs
int * PermuteFromLIDs() const
List of elements in the source map that are permuted.
Definition: Epetra_Import.h:268
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::NumRemoteIDs
int NumRemoteIDs() const
Returns the number of elements that are not on the calling processor.
Definition: Epetra_Import.h:273
Epetra_Import::PermuteFromLIDs_
int * PermuteFromLIDs_
Definition: Epetra_Import.h:327
Epetra_Export::PermuteToLIDs_
int * PermuteToLIDs_
Definition: Epetra_Export.h:298
Epetra_Import::NumSend
int NumSend() const
Total number of elements to be sent.
Definition: Epetra_Import.h:288
Epetra_Export::NumRecv_
int NumRecv_
Definition: Epetra_Export.h:308
Epetra_Import::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_Import.h:265
Epetra_Import::Distor_
Epetra_Distributor * Distor_
Definition: Epetra_Import.h:338
Epetra_Import::NumSameIDs_
int NumSameIDs_
Definition: Epetra_Import.h:324
Epetra_Import::operator=
Epetra_Import & operator=(const Epetra_Import &src)
Definition: Epetra_Import.h:310
Epetra_Import::SourceMap_
Epetra_BlockMap SourceMap_
Definition: Epetra_Import.h:322
Epetra_Import::ExportLIDs_
int * ExportLIDs_
Definition: Epetra_Import.h:332
Epetra_Import::ExportPIDs
int * ExportPIDs() const
List of processors to which elements will be sent, ExportLIDs() [i] will be sent to processor ExportP...
Definition: Epetra_Import.h:285
Epetra_Export::Epetra_Import
friend class Epetra_Import
Definition: Epetra_Export.h:63
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_Object::ReportError
virtual int ReportError(const std::string Message, int ErrorCode) const
Error reporting method.
Definition: Epetra_Object.cpp:103
Epetra_Import::PermuteToLIDs_
int * PermuteToLIDs_
Definition: Epetra_Import.h:326
Epetra_BlockMap.h
Epetra_BlockMap
Epetra_BlockMap: A class for partitioning block element vectors and matrices.
Definition: Epetra_BlockMap.h:194
Epetra_Import::ExportLIDs
int * ExportLIDs() const
List of elements that will be sent to other processors.
Definition: Epetra_Import.h:282
Epetra_Import::PermuteToLIDs
int * PermuteToLIDs() const
List of elements in the target map that are permuted.
Definition: Epetra_Import.h:270
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::SourceMap
const Epetra_BlockMap & SourceMap() const
Returns the SourceMap used to construct this exporter.
Definition: Epetra_Export.h:275
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_Import::NumExportIDs
int NumExportIDs() const
Returns the number of elements that must be sent by the calling processor to other processors.
Definition: Epetra_Import.h:279
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_Import::NumSameIDs
int NumSameIDs() const
Returns the number of elements that are identical between the source and target maps,...
Definition: Epetra_Import.h:262
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_Import::RemoteLIDs
int * RemoteLIDs() const
List of elements in the target map that are coming from other processors.
Definition: Epetra_Import.h:276
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
Epetra_Import::NumRecv
int NumRecv() const
Total number of elements to be received.
Definition: Epetra_Import.h:291