Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

SuperLU Class Reference

#include <SuperLU.h>

Inheritance diagram for SuperLU::

SparseGenColLinSolver LinearSOESolver Solver List of all members.

Public Methods

 SuperLU (int permSpec=0, double thresh=0.0, int panelSize=6, int relax=6)
 ~SuperLU ()
int solve (void)
int setSize (void)
 virtual int setLinearSOE(LinearSOE &theSOE) =0;. More...

int sendSelf (int commitTag, Channel &theChannel)
int recvSelf (int commitTag, Channel &theChannel, FEM_ObjectBroker &theBroker)

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 )
 

Definition at line 44 of file SuperLU.cpp.

SuperLU::~SuperLU ( )
 

Definition at line 53 of file SuperLU.cpp.


Member Function Documentation

int SuperLU::recvSelf ( int commitTag,
Channel & theChannel,
FEM_ObjectBroker & theBroker )
 

Definition at line 217 of file SuperLU.cpp.

int SuperLU::sendSelf ( int commitTag,
Channel & theChannel )
 

Definition at line 210 of file SuperLU.cpp.

int SuperLU::setSize ( void ) [virtual]
 

virtual int setLinearSOE(LinearSOE &theSOE) =0;.

Reimplemented from LinearSOESolver.

Definition at line 148 of file SuperLU.cpp.

int SuperLU::solve ( void ) [virtual]
 

Reimplemented from LinearSOESolver.

Definition at line 89 of file SuperLU.cpp.


The documentation for this class was generated from the following files:
Copyright Contact Us