Epetra Package Browser (Single Doxygen Collection) Development
Loading...
Searching...
No Matches
Epetra_LinearProblemRedistor.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_LINEARPROBLEMREDISTOR_H
45#define EPETRA_LINEARPROBLEMREDISTOR_H
46
47class Epetra_Map;
48class Epetra_Export;
51
53
66class EPETRA_LIB_DLL_EXPORT Epetra_LinearProblemRedistor {
67
68 public:
69
71
72
81 Epetra_LinearProblemRedistor(Epetra_LinearProblem * OrigProblem, const Epetra_Map & RedistMap);
82
84
95 Epetra_LinearProblemRedistor(Epetra_LinearProblem * OrigProblem, int NumProc, bool Replicate);
96
98
100
102
105
107
108
110
140 int CreateRedistProblem(const bool ConstructTranspose, const bool MakeDataContiguous,
141 Epetra_LinearProblem *& RedistProblem);
142
143
145
157 int UpdateRedistProblemValues(Epetra_LinearProblem * ProblemWithNewValues);
158
160
171 int UpdateRedistRHS(Epetra_MultiVector * RHSWithNewValues);
173
175
176
187 int UpdateOriginalLHS(Epetra_MultiVector * LHS);
189
191
192
197 const Epetra_Map & RedistMap() const {return(*RedistMap_);};
198
200
204 const Epetra_Export & RedistExporter() const {return(*RedistExporter_);};
206
208
209
211
215 int ExtractHbData(int & M, int & N, int & nz, int * & ptr, int * & ind,
216 double * & val, int & Nrhs, double * & rhs, int & ldrhs,
217 double * & lhs, int & ldlhs) const;
219
221
222
224 virtual void Print(std::ostream & os) const;
226
227 private:
228 int GenerateRedistMap();
229
236
242
243 mutable int * ptr_;
244
245
246};
247
248#endif /* EPETRA_LINEARPROBLEMREDISTOR_H */
Epetra_Export: This class builds an export object for efficient exporting of off-processor elements.
Epetra_LinearProblemRedistor: A class for redistributing an Epetra_LinearProblem object.
const Epetra_Map & RedistMap() const
Returns const reference to the Epetra_Map that describes the layout of the RedistLinearProblem.
Epetra_RowMatrixTransposer * Transposer_
virtual void Print(std::ostream &os) const
Print method.
const Epetra_Export & RedistExporter() const
Returns const reference to the Epetra_Export object used to redistribute the original linear problem.
Epetra_LinearProblem: The Epetra Linear Problem Class.
Epetra_Map: A class for partitioning vectors and matrices.
Definition Epetra_Map.h:119
Epetra_MultiVector: A class for constructing and using dense multi-vectors, vectors and matrices in p...
Epetra_RowMatrixTransposer: A class for transposing an Epetra_RowMatrix object.