library: libMatrix #include "TDecompSparse.h" |
TDecompSparse
class description - header file - source file - inheritance tree (.pdf)
protected:
static void CopyUpperTriang(const TMatrixDSparse& a, Double_t* b)
Int_t ErrorFlag()
static 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)
static 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)
static 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)
static 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)
virtual const TMatrixDBase& GetDecompMatrix() const
Double_t GetThresholdPivoting()
Double_t GetTreatAsZero()
static Int_t IDiag(Int_t ix, Int_t iy)
Int_t IError()
void InitParam()
static 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)
static 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)
static 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)
static void InitPivot_sub2a(const Int_t n, Int_t* ipe, Int_t* iw, const Int_t lw, Int_t& iwfr, Int_t& ncmpa)
static 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)
static 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)
static 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)
static 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)
Int_t MinIntWorkspace()
Int_t MinRealWorkspace()
static Int_t NonZerosUpperTriang(const TMatrixDSparse& a)
void SetThresholdPivoting(Double_t piv)
void SetTreatAsZero(Double_t tol)
static 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)
static 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)
static 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)
public:
TDecompSparse()
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)
TDecompSparse(const TMatrixDSparse& a, Int_t verbose)
TDecompSparse(const TDecompSparse& another)
virtual ~TDecompSparse()
static TClass* Class()
virtual Bool_t Decompose()
virtual void Det(Double_t&, Double_t&)
virtual Int_t GetNcols() const
virtual Int_t GetNrows() const
virtual TClass* IsA() const
TDecompSparse& operator=(const TDecompSparse& source)
virtual void Print(Option_t* opt = "") const
virtual void SetMatrix(const TMatrixDSparse& a)
void SetVerbose(Int_t v)
virtual void ShowMembers(TMemberInspector& insp, char* parent)
virtual Bool_t Solve(TVectorD& b)
virtual TVectorD Solve(const TVectorD& b, Bool_t& ok)
virtual Bool_t Solve(TMatrixDColumn&)
virtual void Streamer(TBuffer& b)
void StreamerNVirtual(TBuffer& b)
virtual Bool_t TransSolve(TVectorD& b)
virtual TVectorD TransSolve(const TVectorD& b, Bool_t& ok)
virtual Bool_t TransSolve(TMatrixDColumn&)
protected:
Int_t fVerbose
Int_t fIcntl[31] integer control numbers
Double_t fCntl[6] float control numbers
Int_t fInfo[21] array used for communication between programs
Double_t fPrecision precision we demand from the linear system solver. If it isn't
TArrayI fIkeep pivot sequence and temporary storage information
TArrayI fIw
TArrayI fIw1
TArrayI fIw2
Int_t fNsteps
Int_t fMaxfrt
TArrayD fW temporary storage for the factorization
Double_t fIPessimism amounts by which to increase allocated factorization space when
Double_t fRPessimism inadequate space is detected. fIPessimism is for array "fIw",
TMatrixDSparse fA original matrix; needed for the iterative solving procedure
Int_t fNrows
Int_t fNnonZeros
TArrayD fFact size of fFact array; may be increased during the numerical factorization
TArrayI fRowFact
TArrayI fColFact
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(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 .
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 .
Bool_t Decompose()
Decomposition engine .
If the decomposition succeeds, bit kDecomposed is set .
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 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_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_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
Last update: root/matrix:$Name: $:$Id: TDecompSparse.cxx,v 1.15 2006/06/02 05:11:20 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.