Amesos Package Browser (Single Doxygen Collection) Development
Loading...
Searching...
No Matches
Amesos_Dscpack.h
Go to the documentation of this file.
1// @HEADER
2// ***********************************************************************
3//
4// Amesos: Direct Sparse Solver Package
5// Copyright (2004) Sandia Corporation
6//
7// Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
8// license for use of this work by or on behalf of the U.S. Government.
9//
10// This library is free software; you can redistribute it and/or modify
11// it under the terms of the GNU Lesser General Public License as
12// published by the Free Software Foundation; either version 2.1 of the
13// License, or (at your option) any later version.
14//
15// This library is distributed in the hope that it will be useful, but
16// WITHOUT ANY WARRANTY; without even the implied warranty of
17// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18// Lesser General Public License for more details.
19//
20// You should have received a copy of the GNU Lesser General Public
21// License along with this library; if not, write to the Free Software
22// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
23// USA
24// Questions? Contact Michael A. Heroux (maherou@sandia.gov)
25//
26// ***********************************************************************
27// @HEADER
28
29#ifndef AMESOS_DSCPACK_H
30#define AMESOS_DSCPACK_H
31
32#include "Amesos_ConfigDefs.h"
33#include "Amesos_BaseSolver.h"
34#include "Amesos_NoCopiable.h"
35#include "Amesos_Utils.h"
36#include "Amesos_Time.h"
37#include "Amesos_Status.h"
38#include "Amesos_Control.h"
39#include "Epetra_LinearProblem.h"
40#include "Epetra_Comm.h"
41#include "Epetra_Import.h"
42#include "Teuchos_RCP.hpp"
43
44// Amesos_Dscpack_Pimpl contains a pointer to the structure defined in
45// dscmain.h. This prevents Amesos_Dscpack.h from having to include dscmain.h.
46//
47// Doxygen does not handle forward class references well.
48#ifndef DOXYGEN_SHOULD_SKIP_THIS
50#endif
51
52
54
61 private Amesos_Time,
62 private Amesos_NoCopiable,
63 private Amesos_Utils,
64 private Amesos_Control,
65 private Amesos_Status {
66
67public:
68
70
78 Amesos_Dscpack(const Epetra_LinearProblem& LinearProblem );
79
81
83 ~Amesos_Dscpack(void);
85
87
89
91
92 int Solve();
93
95
96
97 const Epetra_LinearProblem *GetProblem() const { return(Problem_); };
98
100
103 bool MatrixShapeOK() const ;
104
106 {
107 return(0);
108 }
109
110 bool UseTranspose() const
111 {
112 return(false);
113 }
114
115 const Epetra_Comm& Comm() const {return(GetProblem()->GetOperator()->Comm());};
116
117 int SetParameters( Teuchos::ParameterList &ParameterList ) ;
118
121
124
126 int NumSolve() const { return( Amesos_Status::NumSolve_ ); }
127
129 void PrintTiming() const;
130
132 void PrintStatus() const;
133
135 void GetTiming( Teuchos::ParameterList &TimingParameterList ) const { Amesos_Time::GetTiming(TimingParameterList); }
136
138
139private:
140
141 const Epetra_Import& Importer() const
142 {
143 return(*Importer_.get());
144 }
145
146 const Epetra_Map& DscRowMap() const
147 {
148 return(*DscRowMap_.get());
149 }
150
151 const Epetra_Map& DscColMap() const
152 {
153 return(*DscColMap_.get());
154 }
155
158
161
163 const Epetra_LinearProblem * Problem_;
164
165 Teuchos::RCP<Amesos_Dscpack_Pimpl> PrivateDscpackData_;
166
174
181
182 RCP<Epetra_Import> Importer_;
183 RCP<Epetra_Map> DscColMap_;
184 RCP<Epetra_Map> DscRowMap_;
185
187
190
191 // track memory (as reported by DSCPACK routines)
192 int TotalMemory_; // estimates of the total memory requirements
193 // for the factorization step as a
194 // whole number of Mbytes. As
195 // reported in the manual, this is a
196 // "fair" estimation, but not
197 // accurate at the last byte.
198
199
200}; // class Amesos_Dscpack
201#endif /* AMESOS_DSCPACK_H */
Amesos_BaseSolver: A pure virtual class for direct solution of real-valued double-precision operators...
Amesos_Control: Container for some control variables.
Amesos_Dscpack: An object-oriented wrapper for Dscpack.
int NumericFactorization()
Performs NumericFactorization on the matrix A.
int PerformSymbolicFactorization()
Performs the symbolic factorization.
int PerformNumericFactorization()
Performs the numeric factorization.
bool MatrixShapeOK() const
Returns true if DSCPACK can handle this matrix shape.
RCP< Epetra_Map > DscRowMap_
bool A_and_LU_built
Tells us whether to free them.
void PrintTiming() const
Prints timing information.
int NumSolve() const
Returns the number of solves performed by this object.
RCP< Epetra_Import > Importer_
const Epetra_Import & Importer() const
const Epetra_Map & DscColMap() const
Teuchos::RCP< Amesos_Dscpack_Pimpl > PrivateDscpackData_
int NumNumericFact() const
Returns the number of numeric factorizations performed by this object.
int NumSymbolicFact() const
Returns the number of symbolic factorizations performed by this object.
const Epetra_LinearProblem * GetProblem() const
Returns the Epetra_LinearProblem.
int Solve()
Solves A X = B (or AT x = B)
void PrintStatus() const
Prints information about the factorization and solution phases.
int SetParameters(Teuchos::ParameterList &ParameterList)
Updates internal variables.
RCP< Epetra_Map > DscColMap_
const Epetra_Comm & Comm() const
Returns a pointer to the Epetra_Comm communicator associated with this operator.
Amesos_Dscpack(const Epetra_LinearProblem &LinearProblem)
Amesos_Dscpack Constructor.
void GetTiming(Teuchos::ParameterList &TimingParameterList) const
Extracts timing information from the current solver and places it in the parameter list.
const Epetra_Map & DscRowMap() const
~Amesos_Dscpack(void)
Amesos_Dscpack Destructor.
int SymbolicFactorization()
Performs SymbolicFactorization on the matrix A.
bool UseTranspose() const
Returns the current UseTranspose setting.
const Epetra_LinearProblem * Problem_
Pointer to the linear problem.
int SetUseTranspose(bool UseTranspose)
If set true, X will be set to the solution of AT X = B (not A X = B)
int * GlobalStructNewColNum
Amesos_NoCopiable: Simple class to prevent the usage of copy constructor and operator =.
Amesos_Status: Container for some status variables.
int NumSymbolicFact_
Number of symbolic factorization phases.
int NumSolve_
Number of solves.
int NumNumericFact_
Number of numeric factorization phases.
Amesos_Time: Container for timing information.
Definition Amesos_Time.h:51
void GetTiming(Teuchos::ParameterList &list) const
Load up the current timing information into the parameter list.
Amesos_Utils: Collections of basic utilities.