class ProfileSPDLinDirectSkypackSolver : public ProfileSPDLinSolver


Inheritance:


Public Methods

ProfileSPDLinDirectSkypackSolver()
ProfileSPDLinDirectSkypackSolver(int mCols, int mRows)
virtual ~ProfileSPDLinDirectSkypackSolver()
virtual int solve(void)
virtual int setSize(void)
virtual int setProfileSOE(ProfileSPDLinSOE &theSOE)
int sendSelf(int commitTag, Channel &theChannel)
int recvSelf(int commitTag, Channel &theChannel, FEM_ObjectBroker &theBroker)

Inherited from ProfileSPDLinSolver:

Public Methods

virtual int setLinearSOE(ProfileSPDLinSOE &theSOE)

Protected Fields

ProfileSPDLinSOE* theSOE

Inherited from LinearSOESolver:


Inherited from Solver:


Inherited from MovableObject:

Public Methods

int getClassTag(void) const
int getDbTag(void) const
void setDbTag(int dbTag)

Documentation

A ProfileSPDLinDirectSkypackSolver object can be constructed to solve a ProfileSPDLinSOE object. It does this by direct means using the routines supplied in the SKYPACK library, a library which uses the BLAS levels 1,2 and 3 for the factorization and substitution.

The routines in SKYPACK require a number of work areas: int block[3] and double invD[size]. In addition, to allow the use of the BLAS 2 and 3, work areas double rw[mRows x mCols], double tw[mRows x mRows] and int index[max(mCols,mRows)] are created.

ProfileSPDLinDirectSkypackSolver()

ProfileSPDLinDirectSkypackSolver(int mCols, mRows);

ProfileSPDLinDirectSkypackSolver(int mCols, int mRows)

virtual ~ProfileSPDLinDirectSkypackSolver()

A unique class tag (defined in <classTags.h>) is passed to the ProfileSPDLinSolver constructor. Sets mCols and mRows equal to 0 and does not try and allocate any memory for the work arrays.

virtual int solve(void)

The solver first copies the B vector into X and then solves the BandSPDLinSOE system. If the matrix has not been factored, the matrix is first factored using the SKYPACK routine skysf2(), if mCols and mRows equal 0, or skypf2(). skysf2() is a routine which uses the BLAS level 1 routines, skypf2() is a routine which uses BLAS levels 2 and 3. If skypf2() has been called, invD is set up. Once the matrix has been factored, skyss() is called. If the solution is sucessfully obtained, i.e. the skyss() routine returns 0 in the INFO argument, 0 is returned, otherwise it prints a warning message and returns INFO. The solve process changes A and X.

virtual int setSize(void)

Is responsible for setting the block information required by the SKYPACK routines (block[0]=1; block[1]=size, block[2]=1) and for creating space for the invD work array. Returns 0 if successfull, otherwise a warning message is printed and a -1 is returned.

virtual int setProfileSOE(ProfileSPDLinSOE &theSOE)

int sendSelf(int commitTag, Channel &theChannel)

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


This class has no child classes.

alphabetic index Contents

this page has been generated automatically by a slightly modified version of doc++ for OpenSees

Copyright Contact Us