library: libMatrix
#include "TDecompSparse.h"

TDecompSparse


class description - source file - inheritance tree (.pdf)

class TDecompSparse : public TDecompBase

Inheritance Chart:
TObject
<-
TDecompBase
<-
TDecompSparse

    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&)

Data Members


    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

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()

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.9 2004/12/02 11:53:30 rdm 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.