Epetra Package Browser (Single Doxygen Collection) Development
Loading...
Searching...
No Matches
Epetra_RowMatrixTransposer.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_ROWMATRIXTRANSPOSER_H
45#define EPETRA_ROWMATRIXTRANSPOSER_H
46#include <Epetra_Object.h>
49class Epetra_Map;
50class Epetra_Export;
51
53
58class EPETRA_LIB_DLL_EXPORT Epetra_RowMatrixTransposer {
59
60 public:
61
63
64
73
75
77
79
82
84
85
87
100 int CreateTranspose(const bool MakeDataContiguous,
101 Epetra_CrsMatrix *& TransposeMatrix,
102 Epetra_Map * TransposeRowMap = 0);
103
104
106
117 int UpdateTransposeValues(Epetra_RowMatrix * MatrixWithNewValues);
119
121
122
125
127
128
130
134 const Epetra_Map & TransposeRowMap() const {return(*TransposeRowMap_);};
136
140 const Epetra_Export & TransposeExporter() const{return(*TransposeExporter_);};
142
143 private:
144 void DeleteData();
146
156 int * Indices_;
157 double * Values_;
159 int ** TransIndices_; // FIXME long long
160 double ** TransValues_;
163
164};
165
166#endif /* EPETRA_ROWMATRIXTRANSPOSER_H */
Epetra_CrsMatrix: A class for constructing and using real-valued double-precision sparse compressed r...
Epetra_Export: This class builds an export object for efficient exporting of off-processor elements.
Epetra_Map: A class for partitioning vectors and matrices.
Definition Epetra_Map.h:119
Epetra_RowMatrixTransposer: A class for transposing an Epetra_RowMatrix object.
int UpdateOriginalMatrixValues()
Update values of original matrix (Not implemented and not sure if we will implement this).
const Epetra_Map & TransposeRowMap() const
Returns const reference to the Epetra_Map object describing the row distribution of the transpose mat...
const Epetra_Export & TransposeExporter() const
Returns const reference to the Epetra_Export object used to redistribute the original matrix.
Epetra_RowMatrix: A pure virtual class for using real-valued double-precision row matrices.