library: libMatrix
#include "TDecompSparse.h"

TDecompSparse


class description - header file - source file
viewCVS header - viewCVS source

class TDecompSparse: public TDecompBase

Inheritance Inherited Members Includes Libraries
Class Charts

Function Members (Methods)

Display options:
Show inherited
Show non-public
public:
TDecompSparse()
TDecompSparse(const TDecompSparse& another)
TDecompSparse(const TMatrixDSparse& a, Int_t verbose)
TDecompSparse(Int_t nRows, Int_t nr_nonZeros, Int_t verbose)
TDecompSparse(Int_t row_lwb, Int_t row_upb, Int_t nr_nonZeros, Int_t verbose)
virtual~TDecompSparse()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTObject::Clear(Option_t* = "")
virtual TObject*TObject::Clone(const char* newname = "") const
virtual Int_tTObject::Compare(const TObject* obj) const
virtual Double_tTDecompBase::Condition()
virtual voidTObject::Copy(TObject& object) const
virtual Bool_tDecompose()
virtual voidTObject::Delete(Option_t* option = "")
virtual voidDet(Double_t&, Double_t&)
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() const
virtual TObject*TObject::DrawClone(Option_t* option = "") const
virtual voidTObject::Dump() const
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
Int_tTDecompBase::GetColLwb() const
Double_tTDecompBase::GetCondition() const
Double_tTDecompBase::GetDet1() const
Double_tTDecompBase::GetDet2() const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual const char*TObject::GetIconName() const
virtual const char*TObject::GetName() const
virtual Int_tGetNcols() const
virtual Int_tGetNrows() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
Int_tTDecompBase::GetRowLwb() const
virtual const char*TObject::GetTitle() const
Double_tTDecompBase::GetTol() const
virtual UInt_tTObject::GetUniqueID() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTObject::Hash() const
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
virtual voidTObject::Inspect() const
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTObject::IsSortable() const
Bool_tTObject::IsZombie() const
virtual voidTObject::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
virtual Bool_tTDecompBase::MultiSolve(TMatrixD& B)
virtual Bool_tTObject::Notify()
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
TDecompSparse&operator=(const TDecompSparse& source)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidPrint(Option_t* opt = "") const
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") const
virtual voidTObject::SavePrimitive(ostream& out, Option_t* option = "")
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
virtual voidTObject::SetDrawOption(Option_t* option = "")
static voidTObject::SetDtorOnly(void* obj)
virtual voidSetMatrix(const TMatrixDSparse& a)
static voidTObject::SetObjectStat(Bool_t stat)
Double_tTDecompBase::SetTol(Double_t newTol)
virtual voidTObject::SetUniqueID(UInt_t uid)
voidSetVerbose(Int_t v)
virtual voidShowMembers(TMemberInspector& insp, char* parent)
virtual Bool_tSolve(TVectorD& b)
virtual Bool_tSolve(TMatrixDColumn&)
virtual TVectorDSolve(const TVectorD& b, Bool_t& ok)
virtual voidStreamer(TBuffer& b)
voidStreamerNVirtual(TBuffer& b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
virtual Bool_tTransSolve(TVectorD& b)
virtual Bool_tTransSolve(TMatrixDColumn&)
virtual TVectorDTransSolve(const TVectorD& b, Bool_t& ok)
virtual voidTObject::UseCurrentStyle()
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = "0", Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = "0", Int_t option = 0, Int_t bufsize = 0) const
protected:
static voidCopyUpperTriang(const TMatrixDSparse& a, Double_t* b)
static voidTDecompBase::DiagProd(const TVectorD& diag, Double_t tol, Double_t& d1, Double_t& d2)
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
Int_tErrorFlag()
static voidFactor(const Int_t n, const Int_t nz, TArrayI& Airn, TArrayI& Aicn, TArrayD& Aa, TArrayI& Aiw, TArrayI& Aikeep, const Int_t nsteps, Int_t& maxfrt, TArrayI& Aiw1, Int_t* icntl, Double_t* cntl, Int_t* info)
static voidFactor_sub1(const Int_t n, const Int_t nz, Int_t& nz1, Double_t* a, const Int_t la, Int_t* irn, Int_t* icn, Int_t* iw, const Int_t liw, Int_t* perm, Int_t* iw2, Int_t* icntl, Int_t* info)
static voidFactor_sub2(const Int_t n, const Int_t nz, Double_t* a, const Int_t la, Int_t* iw, const Int_t liw, Int_t* perm, Int_t* nstk, const Int_t nsteps, Int_t& maxfrt, Int_t* nelim, Int_t* iw2, Int_t* icntl, Double_t* cntl, Int_t* info)
static voidFactor_sub3(Double_t* a, Int_t* iw, Int_t& j1, Int_t& j2, const Int_t itop, const Int_t ireal, Int_t& ncmpbr, Int_t& ncmpbi)
virtual const TMatrixDBase&GetDecompMatrix() const
Double_tGetThresholdPivoting()
Double_tGetTreatAsZero()
Int_tTDecompBase::Hager(Double_t& est, Int_t iter = 5)
static Int_tIDiag(Int_t ix, Int_t iy)
Int_tIError()
voidInitParam()
static voidInitPivot(const Int_t n, const Int_t nz, TArrayI& Airn, TArrayI& Aicn, TArrayI& Aiw, TArrayI& Aikeep, TArrayI& Aiw1, Int_t& nsteps, const Int_t iflag, Int_t* icntl, Double_t* cntl, Int_t* info, Double_t& ops)
static voidInitPivot_sub1(const Int_t n, const Int_t nz, Int_t* irn, Int_t* icn, Int_t* iw, Int_t* ipe, Int_t* iq, Int_t* flag, Int_t& iwfr, Int_t* icntl, Int_t* info)
static voidInitPivot_sub2(const Int_t n, Int_t* ipe, Int_t* iw, const Int_t lw, Int_t& iwfr, Int_t* nv, Int_t* nxt, Int_t* lst, Int_t* ipd, Int_t* flag, const Int_t iovflo, Int_t& ncmpa, const Double_t fratio)
static voidInitPivot_sub2a(const Int_t n, Int_t* ipe, Int_t* iw, const Int_t lw, Int_t& iwfr, Int_t& ncmpa)
static voidInitPivot_sub3(const Int_t n, const Int_t nz, Int_t* irn, Int_t* icn, Int_t* perm, Int_t* iw, Int_t* ipe, Int_t* iq, Int_t* flag, Int_t& iwfr, Int_t* icntl, Int_t* info)
static voidInitPivot_sub4(const Int_t n, Int_t* ipe, Int_t* iw, const Int_t lw, Int_t& iwfr, Int_t* ips, Int_t* ipv, Int_t* nv, Int_t* flag, Int_t& ncmpa)
static voidInitPivot_sub5(const Int_t n, Int_t* ipe, Int_t* nv, Int_t* ips, Int_t* ne, Int_t* na, Int_t* nd, Int_t& nsteps, const Int_t nemin)
static voidInitPivot_sub6(const Int_t n, const Int_t nz, Int_t* irn, Int_t* icn, Int_t* perm, Int_t* na, Int_t* ne, Int_t* nd, const Int_t nsteps, Int_t* lstki, Int_t* lstkr, Int_t* iw, Int_t* info, Double_t& ops)
voidTObject::MakeZombie()
Int_tMinIntWorkspace()
Int_tMinRealWorkspace()
static Int_tNonZerosUpperTriang(const TMatrixDSparse& a)
voidTDecompBase::ResetStatus()
voidSetThresholdPivoting(Double_t piv)
voidSetTreatAsZero(Double_t tol)
static voidSolve(const Int_t n, TArrayD& Aa, TArrayI& Aiw, TArrayD& Aw, const Int_t maxfrt, TVectorD& b, TArrayI& Aiw1, const Int_t nsteps, Int_t* icntl, Int_t* info)
static voidSolve_sub1(const Int_t n, Double_t* a, Int_t* iw, Double_t* w, Double_t* rhs, Int_t* iw2, const Int_t nblk, Int_t& latop, Int_t* icntl)
static voidSolve_sub2(const Int_t n, Double_t* a, Int_t* iw, Double_t* w, Double_t* rhs, Int_t* iw2, const Int_t nblk, const Int_t latop, Int_t* icntl)

Data Members

public:
enum TDecompBase::EMatrixDecompStat { kInit
kPatternSet
kValuesSet
kMatrixSet
kDecomposed
kDetermined
kCondition
kSingular
};
enum TDecompBase::[unnamed] { kWorkMax
};
enum TObject::EStatusBits { kCanDelete
kMustCleanup
kObjInCanvas
kIsReferenced
kHasUUID
kCannotPick
kNoContextMenu
kInvalidObject
};
enum TObject::[unnamed] { kIsOnHeap
kNotDeleted
kZombie
kBitMask
kSingleKey
kOverwrite
kWriteDelete
};
protected:
Int_tfVerbose
Int_tfIcntl[31]integer control numbers
Double_tfCntl[6]float control numbers
Int_tfInfo[21]array used for communication between programs
Double_tfPrecisionprecision we demand from the linear system solver. If it isn't
TArrayIfIkeeppivot sequence and temporary storage information
TArrayIfIw
TArrayIfIw1
TArrayIfIw2
Int_tfNsteps
Int_tfMaxfrt
TArrayDfWtemporary storage for the factorization
Double_tfIPessimismamounts by which to increase allocated factorization space when
Double_tfRPessimisminadequate space is detected. fIPessimism is for array "fIw",
TMatrixDSparsefAoriginal matrix; needed for the iterative solving procedure
Int_tfNrows
Int_tfNnonZeros
TArrayDfFactsize of fFact array; may be increased during the numerical factorization
TArrayIfRowFact
TArrayIfColFact
Double_tTDecompBase::fTolsqrt(epsilon); epsilon is smallest number number so that 1+epsilon > 1
Double_tTDecompBase::fDet1determinant mantissa
Double_tTDecompBase::fDet2determinant exponent for powers of 2
Double_tTDecompBase::fConditionmatrix condition number
Int_tTDecompBase::fRowLwbRow lower bound of decomposed matrix
Int_tTDecompBase::fColLwbColumn lower bound of decomposed matrix

Class Description

                                                                       
 Sparse Symmetric Decomposition class                                  
                                                                       
 Solve a sparse symmetric system of linear equations using a method    
 based on Gaussian elimination as discussed in Duff and Reid,          
 ACM Trans. Math. Software 9 (1983), 302-325.                          
                                                                       

TDecompSparse()
 Default constructor
TDecompSparse(Int_t nRows,Int_t nr_nonZeros,Int_t verbose)
 Constructor for a matrix with nrows and unspecified number of columns .
 nr_nonZeros is the total number of non-zero entries in the matrix .
TDecompSparse(Int_t row_lwb,Int_t row_upb,Int_t nr_nonZeros,Int_t verbose)
 Constructor for a matrix with row range, [row_lwb..row_upb] and unspecified column
 range . nr_nonZeros is the total number of non-zero entries in the matrix .
TDecompSparse(const TMatrixDSparse &a,Int_t verbose)
 Constructor for matrix A .
TDecompSparse(const TDecompSparse &another)
 Copy constructor
Int_t NonZerosUpperTriang(const TMatrixDSparse &a)
 Static function, returning the number of non-zero entries in the upper triangular matrix .
void CopyUpperTriang(const TMatrixDSparse &a,Double_t *b)
 Static function, copying the non-zero entries in the upper triangle to
 array b . User should allocate enough memory for array b .
void SetMatrix(const TMatrixDSparse &a)
 Set matrix to be decomposed .
Bool_t Decompose()
 Decomposition engine .
 If the decomposition succeeds, bit kDecomposed is set .
Bool_t Solve(TVectorD &b)
 Solve Ax=b . Solution returned in b.
void InitParam()
 initializing control parameters
void InitPivot(const Int_t n,const Int_t nz,TArrayI &Airn,TArrayI &Aicn, TArrayI &Aiw,TArrayI &Aikeep,TArrayI &Aiw1,Int_t &nsteps, const Int_t iflag,Int_t *icntl,Double_t *cntl,Int_t *info, Double_t &ops)
 Setup Pivoting variables
void Factor(const Int_t n,const Int_t nz,TArrayI &Airn,TArrayI &Aicn,TArrayD &Aa, TArrayI &Aiw,TArrayI &Aikeep,const Int_t nsteps,Int_t &maxfrt, TArrayI &Aiw1,Int_t *icntl,Double_t *cntl,Int_t *info)
 Factorization routine, the workhorse for the decompostion step
void Solve(const Int_t n,TArrayD &Aa,TArrayI &Aiw, TArrayD &Aw,const Int_t maxfrt,TVectorD &b,TArrayI &Aiw1, const Int_t nsteps,Int_t *icntl,Int_t *info)
 Main routine for solving Ax=b
void InitPivot_sub1(const Int_t n,const Int_t nz,Int_t *irn,Int_t *icn, Int_t *iw,Int_t *ipe,Int_t *iq,Int_t *flag, Int_t &iwfr,Int_t *icntl,Int_t *info)
 Help routine for pivoting setup
void InitPivot_sub2(const Int_t n,Int_t *ipe,Int_t *iw,const Int_t lw, Int_t &iwfr,Int_t *nv,Int_t *nxt,Int_t *lst,Int_t *ipd, Int_t *flag,const Int_t iovflo,Int_t &ncmpa, const Double_t fratio)
 Help routine for pivoting setup
void InitPivot_sub2a(const Int_t n,Int_t *ipe,Int_t *iw,const Int_t lw, Int_t &iwfr,Int_t &ncmpa)
 Help routine for pivoting setup
void InitPivot_sub3(const Int_t n,const Int_t nz,Int_t *irn,Int_t *icn, Int_t *perm,Int_t *iw,Int_t *ipe,Int_t *iq, Int_t *flag,Int_t &iwfr,Int_t *icntl,Int_t *info)
 Help routine for pivoting setup
void InitPivot_sub4(const Int_t n,Int_t *ipe,Int_t *iw,const Int_t lw, Int_t &iwfr,Int_t *ips,Int_t *ipv,Int_t *nv,Int_t *flag, Int_t &ncmpa)
 Help routine for pivoting setup
void InitPivot_sub5(const Int_t n,Int_t *ipe,Int_t *nv,Int_t *ips,Int_t *ne, Int_t *na,Int_t *nd,Int_t &nsteps,const Int_t nemin)
 Help routine for pivoting setup
void InitPivot_sub6(const Int_t n,const Int_t nz,Int_t *irn,Int_t *icn, Int_t *perm,Int_t *na,Int_t *ne,Int_t *nd,const Int_t nsteps, Int_t *lstki,Int_t *lstkr,Int_t *iw,Int_t *info,Double_t &ops)
 Help routine for pivoting setup
void Factor_sub1(const Int_t n,const Int_t nz,Int_t &nz1,Double_t *a, const Int_t la,Int_t *irn,Int_t *icn,Int_t *iw,const Int_t liw, Int_t *perm,Int_t *iw2,Int_t *icntl,Int_t *info)
 Help routine for factorization
void Factor_sub2(const Int_t n,const Int_t nz,Double_t *a,const Int_t la, Int_t *iw,const Int_t liw,Int_t *perm,Int_t *nstk, const Int_t nsteps,Int_t &maxfrt,Int_t *nelim,Int_t *iw2, Int_t *icntl,Double_t *cntl,Int_t *info)
 Help routine for factorization
void Factor_sub3(Double_t *a,Int_t *iw,Int_t &j1,Int_t &j2,const Int_t itop, const Int_t ireal,Int_t &ncmpbr,Int_t &ncmpbi)
 Help routine for factorization
void Solve_sub1(const Int_t n,Double_t *a,Int_t *iw,Double_t *w, Double_t *rhs,Int_t *iw2,const Int_t nblk,Int_t &latop, Int_t *icntl)
 Help routine for solving
void Solve_sub2(const Int_t n,Double_t *a,Int_t *iw,Double_t *w, Double_t *rhs,Int_t *iw2,const Int_t nblk, const Int_t latop,Int_t *icntl)
 Help routine for solving
void Print(Option_t *opt)
 Print class members
TDecompSparse & operator=(const TDecompSparse &source)
 Assignment operator
Int_t MinRealWorkspace()
{ return fInfo[5]; }
Double_t GetThresholdPivoting()
{ return fCntl[1]; }
void SetThresholdPivoting(Double_t piv)
{ fCntl[1] = piv; }
const TMatrixDBase & GetDecompMatrix()
{ MayNotUse("GetDecompMatrix()"); return fA; }
virtual ~TDecompSparse()
{}

Last update: root/matrix:$Name: $:$Id: TDecompSparse.cxx,v 1.16 2006/10/06 06:52:34 brun Exp $
Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *


ROOT page - Class index - Class Hierarchy - Top of the page

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.