Main Page Class Hierarchy Alphabetical List Compound List File List Compound Members File Members
SuperLU Class Reference#include <SuperLU.h>
Inheritance diagram for SuperLU::
List of all members.
Detailed Description
A SuperLU object can be constructed to solve a SparseGenColLinSOE object. It obtains the solution by making calls on the the SuperLU library developed at UC Berkeley by Prof. James Demmel, Xiaoye S. Li and John R. Gilbert. The SuperLU library contains a set of subroutines to solve a sparse linear system
. It uses Gaussian elimination with partial pivoting (GEPP). The columns of A may be preordered before factorization; the preordering for sparsity is completely separate from the factorization and a number of ordering schemes are provided. \
{\bf Interface} \ Constructor \ {SuperLU();} \ \ Destructor \ {\form#25SuperLU();}\\ \ Public Methods \ {int solve(void);} \ {int setSize(void);} \ {int sendSelf(int commitTag, Channel &theChannel);}\ {int recvSelf(int commitTag, Channel &theChannel, FEM\_ObjectBroker &theBroker);}\
{\bf Constructor} \ {SuperLU(int permSpec =0, double thresh = 0.0, int panelSize =6, int relax = 6);} \ A unique class tag (defined in
classTags.h\form#24) is passed to the SparseGenColLinSolver constructor. Saves the values for the arguments {permSpec}, {panelSize}, {relax} and {thresh} that will be used when calling the SuperLU routines in {solve()} and {setSize()}.
{permSpec} defines the ordering routine used in defining the column permutations {permC}:
uses the original ordering supplied,
defines a min-degree ordering based on
and
a min-degree ordering based on
. {relax} defines the min number of columns in a subtree for the subtree to be considered a single supernode. {thresh} defines the pivoting threshhold: at step j of the Gaussian elimination if (abs
{thresh} (max
abs(
)). A value for {thresh} of
definines no pivoting, a value of
classical partial pivoting. {panelSize} defines the number of consequtive columns used as a panel in the elimination. For more information on these values see the SuperLU manual. \
{\bf Destructor} \ {\form#25SuperLU();}\\ Invokes delete on {permR}, {permC} and {etree} arrays. \
{\bf Public Methods } \ {int solve(void);} \ First copies
into
and then solves the FullGenLinSOE system it is associated with (pointer kept by parent class) by calling the SeuperLU routine {dgstrf()}, if the system is marked as not having been factored, or {dgstrs()}, if system is marked as having been factored. If the solution is sucessfully obtained, i.e. the SuperLU routines return
in the INFO argument, it marks the system has having been factored and returns
, otherwise it prints a warning message and returns INFO. The solve process changes
and
and sets the char {rafact} to {Y}. \
{int setSize(void);} \ Obtains the size of the system from it's associaed SparseGenColLinSOE object. With this information it creates space for the integer arrays {permR}, {permC} and {etree}. It then creates the a SuperMatrix for A by calling the SuperLU routine {dCreate\_CompCol\_Matrix()}, sets the column permutation {permR} by calling the SuperLU routine {get\_perm\_c(permSpec, A, permC)}, applies this permutation and determines the elimination tree {etree} by calling the SuperLU routine {sp\_preorder()}. It then creates a SuperMatrix for X by calling the SuperLU routine {dCreate\_Dense\_Matrix()}. Returns
if sucessfull, prints a warning message and returns a
if not enough memory is available for the arrays. \
{int sendSelf(int commitTag, Channel &theChannel);} \ Does nothing but return
. \
{int recvSelf(int commitTag, Channel &theChannel, FEM\_ObjectBroker &theBroker);} \ Does nothing but return
. \
Definition at line 146 of file SuperLU.h.
Constructor & Destructor Documentation
SuperLU::SuperLU (
|
int permSpec = 0,
|
|
double thresh = 0.0,
|
|
int panelSize = 6,
|
|
int relax = 6 )
|
|
Member Function Documentation
int SuperLU::sendSelf (
|
int commitTag,
|
|
Channel & theChannel )
|
|
int SuperLU::setSize (
|
void ) [virtual]
|
|
int SuperLU::solve (
|
void ) [virtual]
|
|
The documentation for this class was generated from the following files:
|