00001
00002
00003 #ifndef _SKYLINEMTXLDL_H__
00004 #define _SKYLINEMTXLDL_H__
00005
00006 #include "SkyLineMtx.h"
00007
00008 DSS_NAMESPASE_BEGIN
00009
00010
00011
00012
00013 class SkyLineMtxLDL :
00014 public SkyLineMtx
00015 {
00016 public:
00017 SkyLineMtxLDL(SparseMatrixF& sm,Ordering* order,MathTracer* eMT);
00018 virtual ~SkyLineMtxLDL();
00019
00020 void LoadMatrixData(SparseMatrixF& sm);
00021
00022
00023 public:
00024 virtual void Solve(double* b, double* x);
00025
00026
00027 virtual double& ElementAt(int i, int j);
00028 virtual void LoadZeros();
00029 virtual void LoadMatrixNumbers(SparseMatrixF& sm);
00030 virtual void SolveLV(const LargeVector& b, LargeVector& x);
00031 virtual void Factorize();
00032 virtual void MultiplyByVector(const LargeVectorAttach& x, LargeVectorAttach& y);
00033
00034 public:
00035 virtual void SchurComplementFactorization(int fixed_blocks);
00036 virtual void SolveA11(double* x,long fixed_blocks);
00037 virtual void Sub_A21_A11inv(double* x,long fixed_blocks);
00038 virtual void Sub_A11inv_A12(double* x,long fixed_blocks);
00039 virtual void WriteCondensedMatrixA22(double* a,Ordering* mcn,IntArrayList* lncn);
00040
00041 };
00042
00043 DSS_NAMESPASE_END
00044
00045 #endif// _SKYLINEMTXLDL_H__