00001
00002
00003 #include "SparseGridMtxPD.h"
00004
00005 DSS_NAMESPASE_BEGIN
00006
00007
00008
00009 SparseGridMtxPD::SparseGridMtxPD(SparseMatrixF& sm,BYTE block_size,Ordering* block_order,long fixed_blocks,MathTracer* MT)
00010 {
00011 this->m_pMatrix = new SparseGridMtxLDL(sm,block_size,block_order,MT);
00012 this->m_lFixed_blocks = fixed_blocks;
00013 }
00014
00015
00016
00017 SparseGridMtxPD::SparseGridMtxPD(SparseMatrixF& sm,BYTE block_size,Ordering* block_order,Ordering* node_order,long fixed_blocks,MathTracer* MT)
00018 {
00019 this->m_pMatrix = new SparseGridMtxLDL(sm,block_size,block_order,node_order,MT);
00020 this->m_lFixed_blocks = fixed_blocks;
00021 }
00022
00023
00024
00025 SparseGridMtxPD::SparseGridMtxPD(SparseGridMtx* pMatrix,long fixed_blocks)
00026 {
00027 this->m_pMatrix = pMatrix;
00028 this->m_lFixed_blocks = fixed_blocks;
00029 }
00030
00031 SparseGridMtxPD::~SparseGridMtxPD()
00032 {
00033 delete m_pMatrix;
00034 }
00035
00036 SparseGridMtx* SparseGridMtxPD::Matrix()
00037 {
00038 return m_pMatrix;
00039 }
00040
00041
00042
00043 void SparseGridMtxPD::SchurComplementFactorization()
00044 {
00045 m_pMatrix->SchurComplementFactorization(m_lFixed_blocks);
00046 }
00047
00048 void SparseGridMtxPD::SolveA11(double* x)
00049 {
00050 m_pMatrix->SolveA11(x,m_lFixed_blocks);
00051 }
00052
00053 void SparseGridMtxPD::Sub_A21_A11inv(double* x)
00054 {
00055 m_pMatrix->Sub_A21_A11inv(x,m_lFixed_blocks);
00056 }
00057
00058 void SparseGridMtxPD::Sub_A11inv_A12(double* x)
00059 {
00060 m_pMatrix->Sub_A11inv_A12(x,m_lFixed_blocks);
00061 }
00062
00063 void SparseGridMtxPD::WriteCondensedMatrixA22(double* a,Ordering* mcn,IntArrayList* lncn)
00064 {
00065 m_pMatrix->WriteCondensedMatrixA22(a,mcn,lncn);
00066 }
00067
00068 DSS_NAMESPASE_END
00069