library: libMatrix #include "TDecompSparse.h" |
TDecompSparse
class description - 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()
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) : TDecompBase(another)
Int_t NonZerosUpperTriang(const TMatrixDSparse &a)
void CopyUpperTriang(const TMatrixDSparse &a,Double_t *b)
void SetMatrix(const TMatrixDSparse &a)
Bool_t Decompose()
Bool_t Solve(TVectorD &b)
Solve Ax=b . Solution returned in b.
void InitParam()
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)
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)
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)
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)
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)
void InitPivot_sub2a(const Int_t n,Int_t *ipe,Int_t *iw,const Int_t lw,
Int_t &iwfr,Int_t &ncmpa)
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)
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)
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)
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)
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)
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)
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)
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)
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)
void Print(Option_t *opt) const
Inline Functions
void ~TDecompSparse()
Int_t IDiag(Int_t ix, Int_t iy)
Int_t IError()
Int_t MinRealWorkspace()
Int_t MinIntWorkspace()
Int_t ErrorFlag()
Double_t GetThresholdPivoting()
Double_t GetTreatAsZero()
void SetThresholdPivoting(Double_t piv)
void SetTreatAsZero(Double_t tol)
const TMatrixDBase& GetDecompMatrix() const
void SetVerbose(Int_t v)
Int_t GetNrows() const
Int_t GetNcols() const
TVectorD Solve(const TVectorD& b, Bool_t& ok)
Bool_t Solve(TMatrixDColumn&)
Bool_t TransSolve(TVectorD& b)
TVectorD TransSolve(const TVectorD& b, Bool_t& ok)
Bool_t TransSolve(TMatrixDColumn&)
void Det(Double_t&, Double_t&)
TDecompSparse& operator=(const TDecompSparse& source)
TClass* Class()
TClass* IsA() const
void ShowMembers(TMemberInspector& insp, char* parent)
void Streamer(TBuffer& b)
void StreamerNVirtual(TBuffer& b)
Last update: root/matrix:$Name: $:$Id: TDecompSparse.cxx,v 1.11 2005/09/02 11:04:45 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.