00001
00002
00003 #ifndef _SPARSEGRIDMTXPD_H__
00004 #define _SPARSEGRIDMTXPD_H__
00005
00006 #include "SparseGridMtxLDL.h"
00007
00008 DSS_NAMESPASE_BEGIN
00009
00010
00011
00012
00013 class SparseGridMtxPD
00014 {
00015
00016 public:
00017
00018
00019 SparseGridMtxPD(SparseMatrixF& sm,BYTE block_size,Ordering* block_order,long fixed_blocks,MathTracer* MT);
00020
00021
00022
00023 SparseGridMtxPD(SparseMatrixF& sm,BYTE block_size,Ordering* block_order,Ordering* node_order,long fixed_blocks,MathTracer* MT);
00024
00025 SparseGridMtxPD(SparseGridMtx* pMatrix,long fixed_blocks);
00026
00027 virtual ~SparseGridMtxPD();
00028
00029 private:
00030 SparseGridMtx* m_pMatrix;
00031 long m_lFixed_blocks;
00032
00033 public:
00034
00035
00036 void SchurComplementFactorization();
00037 void SolveA11(double* x);
00038 void Sub_A21_A11inv(double* x);
00039 void Sub_A11inv_A12(double* x);
00040
00041 void WriteCondensedMatrixA22(double* a,Ordering* mcn,IntArrayList* lncn);
00042
00043 SparseGridMtx* Matrix();
00044
00045 };
00046
00047 DSS_NAMESPASE_END
00048
00049 #endif// _SPARSEGRIDMTX_H__