Epetra Package Browser (Single Doxygen Collection) Development
Loading...
Searching...
No Matches
Epetra_OffsetIndex.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_OFFSETINDEX_H
45#define EPETRA_OFFSETINDEX_H
46
47#include "Epetra_Object.h"
48
49class Epetra_Import;
50class Epetra_Export;
51class Epetra_CrsGraph;
53
55
60class EPETRA_LIB_DLL_EXPORT Epetra_OffsetIndex: public Epetra_Object {
61
62 public:
63
65 Epetra_OffsetIndex( const Epetra_CrsGraph & SourceGraph,
66 const Epetra_CrsGraph & TargetGraph,
67 Epetra_Import & Importer );
68
70 Epetra_OffsetIndex( const Epetra_CrsGraph & SourceGraph,
71 const Epetra_CrsGraph & TargetGraph,
72 Epetra_Export & Exporter );
73
76
78 virtual ~Epetra_OffsetIndex(void);
79
81
82 virtual void Print(std::ostream & os) const;
84
86 int ** SameOffsets() const { return SameOffsets_; }
87
89 int ** PermuteOffsets() const { return PermuteOffsets_; }
90
92 int ** RemoteOffsets() const { return RemoteOffsets_; }
93
94 private:
95
96 template<typename int_type>
97 void GenerateLocalOffsets_( const Epetra_CrsGraph & SourceGraph,
98 const Epetra_CrsGraph & TargetGraph,
99 const int * PermuteLIDs );
100
101 template<typename int_type>
102 void GenerateRemoteOffsets_( const Epetra_CrsGraph & SourceGraph,
103 const Epetra_CrsGraph & TargetGraph,
104 const int * ExportLIDs,
105 const int * RemoteLIDs,
106 Epetra_Distributor & Distor );
107
110 public:
111
119
121};
122
123#endif /* EPETRA_OFFSETINDEX_H */
Epetra_CrsGraph: A class for constructing and using sparse compressed row graphs.
Epetra_Distributor: The Epetra Gather/Scatter Setup Base Class.
Epetra_Export: This class builds an export object for efficient exporting of off-processor elements.
Epetra_Import: This class builds an import object for efficient importing of off-processor elements.
Epetra_Object: The base Epetra class.
virtual void Print(std::ostream &os) const
Print object to an output stream Print method.
Epetra_OffsetIndex: This class builds index for efficient mapping of data from one Epetra_CrsGraph ba...
int ** SameOffsets() const
Accessor.
int ** PermuteOffsets() const
Accessor.
Epetra_OffsetIndex & operator=(const Epetra_OffsetIndex &Indexor)
Epetra_OffsetIndex copy constructor.
int ** RemoteOffsets() const
Accessor.