Amesos Package Browser (Single Doxygen Collection)  Development
Superludist2_OO.h
Go to the documentation of this file.
1 
2 // @HEADER
3 // ***********************************************************************
4 //
5 // Amesos: Direct Sparse Solver Package
6 // Copyright (2004) Sandia Corporation
7 //
8 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
9 // license for use of this work by or on behalf of the U.S. Government.
10 //
11 // This library is free software; you can redistribute it and/or modify
12 // it under the terms of the GNU Lesser General Public License as
13 // published by the Free Software Foundation; either version 2.1 of the
14 // License, or (at your option) any later version.
15 //
16 // This library is distributed in the hope that it will be useful, but
17 // WITHOUT ANY WARRANTY; without even the implied warranty of
18 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 // Lesser General Public License for more details.
20 //
21 // You should have received a copy of the GNU Lesser General Public
22 // License along with this library; if not, write to the Free Software
23 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
24 // USA
25 // Questions? Contact Michael A. Heroux (maherou@sandia.gov)
26 //
27 // ***********************************************************************
28 // @HEADER
29 
30 #include "Amesos_ConfigDefs.h"
31 
32 #include "superlu_ddefs.h"
33 #include "supermatrix.h"
34 // SuperLU defines Reduce to be a macro in util.h, this conflicts with Reduce() in Epetra_MultiVector.h
35 #undef Reduce
36 
37 #ifndef _SUPERLUDIST2_OO_H_
38 #define _SUPERLUDIST2_OO_H_
39 
40 class Epetra_Comm;
41 class Epetra_BlockMap;
42 class Epetra_MultiVector;
43 class Epetra_RowMatrix;
44 #include "Epetra_LinearProblem.h"
46 #include "Epetra_Object.h"
48 
156 
157  public:
159 
171  Superludist2_OO(const Epetra_LinearProblem& LinearProblem);
172 
174 
176  virtual ~Superludist2_OO(void);
178 
180 
182 
185  void SetTrans( bool trans ) {
186  assert( trans == false) ;
187  Transpose_ = trans ;} ;
188 
189 
191 
192 
194  bool GetTrans( ) const { return Transpose_ ;} ;
195 
197 
200  int CheckInput() const ;
201 
203 
205 
237 
239 
241 
243  double Condest() const;
244 
246 
247 
249 
253  int Solve(bool Factor) ;
254 
256  protected:
257 
258  //
259  // These are not used in release 0.1
260  //
264  //
265  // Here are the values returned by ExtractHbData
266  //
267  int M,N,nz;
268  int *ptr, *ind;
269  double *val, *rhs, *lhs;
270  int Nrhs, ldrhs, ldlhs;
271 
272 
273  bool Transpose_ ;
274  bool Factored_;
276  //
277  // Here are the SuperLU data structures for A, L and U:
278  //
279  SOLVEstruct_t SOLVEstruct;
280  int numprocs;
281  int nprow;
282  int npcol;
283  gridinfo_t grid; // SuperLU's grid information
284  superlu_options_t options;
285  SuperMatrix A;
286  ScalePermstruct_t ScalePermstruct;
287  SuperLUStat_t stat;
288  LUstruct_t LUstruct;
289  vector <int> Ap;
290  vector <int> Ai;
291  vector <double> Aval;
292  bool A_and_LU_built ; // Tells us whether to free them
293 
294 
295  // This is needed by the old Superludist2_OO.cpp
296  int numrows ;
297 
298 };
299 
300 
301 #endif /* _SUPERLUDIST2_OO_H_ */
302 
Superludist2_OO::Problem_
const Epetra_LinearProblem * Problem_
Definition: Superludist2_OO.h:261
Superludist2_OO::grid
gridinfo_t grid
Definition: Superludist2_OO.h:283
Superludist2_OO::A
SuperMatrix A
Definition: Superludist2_OO.h:285
Superludist2_OO::LUstruct
LUstruct_t LUstruct
Definition: Superludist2_OO.h:288
Superludist2_OO::ScalePermstruct
ScalePermstruct_t ScalePermstruct
Definition: Superludist2_OO.h:286
Superludist2_OO::Ai
vector< int > Ai
Definition: Superludist2_OO.h:290
Superludist2_OO::Superludist2_OO
Superludist2_OO(const Epetra_LinearProblem &LinearProblem)
Superludist2_OO Constructor.
Definition: Superludist2_OO.cpp:83
Superludist2_OO::Solve
int Solve(bool Factor)
All computation is performed during the call to Solve()
Definition: Superludist2_OO.cpp:176
Superludist2_OO::CheckInput
int CheckInput() const
Prints a summary of solver parameters, performs simple sanity checks.
Superludist2_OO::FirstCallToSolve_
bool FirstCallToSolve_
Definition: Superludist2_OO.h:275
Superludist2_OO::numprocs
int numprocs
Definition: Superludist2_OO.h:280
Superludist2_OO::ldrhs
int ldrhs
Definition: Superludist2_OO.h:270
Superludist2_OO::stat
SuperLUStat_t stat
Definition: Superludist2_OO.h:287
Superludist2_OO::lhs
double * lhs
Definition: Superludist2_OO.h:269
Superludist2_OO::Condest
double Condest() const
Returns the condition number estimate for the current problem, if one exists, returns -1....
Epetra_Comm
Superludist2_OO::nprow
int nprow
Definition: Superludist2_OO.h:281
Superludist2_OO::numrows
int numrows
Definition: Superludist2_OO.h:296
Epetra_LinearProblem.h
Superludist2_OO::Ap
vector< int > Ap
Definition: Superludist2_OO.h:289
Superludist2_OO::SOLVEstruct
SOLVEstruct_t SOLVEstruct
Definition: Superludist2_OO.h:279
Superludist2_OO::val
double * val
Definition: Superludist2_OO.h:269
Superludist2_OO::ldlhs
int ldlhs
Definition: Superludist2_OO.h:270
Superludist2_OO
Superludist2_OO: An object-oriented wrapper for Superludist.
Definition: Superludist2_OO.h:155
Superludist2_OO::Nrhs
int Nrhs
Definition: Superludist2_OO.h:270
Superludist2_OO::npcol
int npcol
Definition: Superludist2_OO.h:282
Superludist2_OO::A_and_LU_built
bool A_and_LU_built
Definition: Superludist2_OO.h:292
Epetra_RowMatrix
Superludist2_OO::nz
int nz
Definition: Superludist2_OO.h:267
Superludist2_OO::SetTrans
void SetTrans(bool trans)
Setting the transpose flag to true causes Solve() to compute A^t x = b.
Definition: Superludist2_OO.h:185
Superludist2_OO::ind
int * ind
Definition: Superludist2_OO.h:268
Epetra_LinearProblem
Superludist2_OO::M
int M
Definition: Superludist2_OO.h:267
Superludist2_OO::ptr
int * ptr
Definition: Superludist2_OO.h:268
Epetra_BlockMap
Superludist2_OO::Factored_
bool Factored_
Definition: Superludist2_OO.h:274
Epetra_LinearProblemRedistor.h
Superludist2_OO::redistor
Epetra_LinearProblemRedistor * redistor
Definition: Superludist2_OO.h:262
Amesos_ConfigDefs.h
Superludist2_OO::~Superludist2_OO
virtual ~Superludist2_OO(void)
Superludist2_OO Destructor.
Definition: Superludist2_OO.cpp:102
Epetra_MultiVector
Superludist2_OO::Aval
vector< double > Aval
Definition: Superludist2_OO.h:291
Epetra_LinearProblemRedistor
Superludist2_OO::N
int N
Definition: Superludist2_OO.h:267
Superludist2_OO::redistProblem
Epetra_LinearProblem * redistProblem
Definition: Superludist2_OO.h:263
Superludist2_OO::rhs
double * rhs
Definition: Superludist2_OO.h:269
Epetra_Object.h
Superludist2_OO::Transpose_
bool Transpose_
Definition: Superludist2_OO.h:273
Superludist2_OO::options
superlu_options_t options
Definition: Superludist2_OO.h:284
Superludist2_OO::GetTrans
bool GetTrans() const
Return the transpose flag.
Definition: Superludist2_OO.h:194