Summary description for SparseGridMtx. More...
#include <SparseGridMtxLU.h>
Public Member Functions | |
void | AlocateMemoryByPattern (IConectMatrix *bskl) |
void | BackSubstU (double *x, long fixed_blocks) |
virtual double & | ElementAt (int i, int j) |
virtual void | Factorize () |
void | ForwardSubstL (double *x, long fixed_blocks) |
double | GetValue (long bi, long bj, long si, long sj, long &aux_bi_idx, long &aux_bj_idx) |
virtual void | LoadMatrixNumbers (SparseMatrixF &sm) |
virtual void | LoadZeros () |
virtual void | MultiplyByVector (const LargeVectorAttach &x, LargeVectorAttach &y) |
virtual void | SchurComplementFactorization (int fixed_blocks) |
void | Solve (double *b, double *x) |
virtual void | SolveA11 (double *x, long fixed_blocks) |
void | SolveLU (double *x, long fixed_blocks=0) |
virtual void | SolveLV (const LargeVector &b, LargeVector &x) |
SparseGridMtxLU (SparseMatrixF &sm, BYTE block_size, Ordering *block_order, Ordering *node_order, MathTracer *eMT, BOOL load_data=1) | |
SparseGridMtxLU (SparseMatrixF &sm, BYTE block_size, Ordering *block_order, MathTracer *eMT, BOOL load_data=1) | |
virtual void | Sub_A11inv_A12 (double *x, long fixed_blocks) |
virtual void | Sub_A21_A11inv (double *x, long fixed_blocks) |
void | SubMultL21 (double *px, double *py, long fixed_blocks) |
y -= L12 * x | |
void | SubMultU12 (double *px, double *py, long fixed_blocks) |
y -= U12 * x | |
virtual void | WriteCondensedMatrixA22 (double *a, Ordering *mcn, IntArrayList *lncn) |
virtual | ~SparseGridMtxLU () |
Public Attributes | |
double * | Columns_data |
double * | Diagonal_data |
double * | Rows_data |
Summary description for SparseGridMtx.
Definition at line 13 of file SparseGridMtxLU.h.
SparseGridMtxLU | ( | SparseMatrixF & | sm, | |
BYTE | block_size, | |||
Ordering * | block_order, | |||
MathTracer * | eMT, | |||
BOOL | load_data = 1 | |||
) |
Definition at line 9 of file SparseGridMtxLU.cpp.
References SparseMatrixF::a, AlocateMemoryByPattern(), Ordering::cm, SparseGridMtx::ComputeBlocks(), and LoadMatrixNumbers().
SparseGridMtxLU | ( | SparseMatrixF & | sm, | |
BYTE | block_size, | |||
Ordering * | block_order, | |||
Ordering * | node_order, | |||
MathTracer * | eMT, | |||
BOOL | load_data = 1 | |||
) |
Definition at line 23 of file SparseGridMtxLU.cpp.
References SparseMatrixF::a, AlocateMemoryByPattern(), Ordering::cm, SparseGridMtx::ComputeBlocks(), and LoadMatrixNumbers().
~SparseGridMtxLU | ( | ) | [virtual] |
Definition at line 194 of file SparseGridMtxLU.cpp.
References Columns_data, Diagonal_data, and Rows_data.
void AlocateMemoryByPattern | ( | IConectMatrix * | bskl | ) |
Reimplemented from SparseGridMtx.
Definition at line 201 of file SparseGridMtxLU.cpp.
References SparseGridMtx::block_storage, SparseGridColumn::column_start_idx, SparseGridMtx::Columns, Columns_data, SparseGridMtx::columns_data_length, IConectMatrix::DetachIndexesAboveDiagonalInColumn(), Diagonal_data, SparseGridColumn::Entries, long(), IMatrix::N(), SparseGridMtx::n_blocks, Rows_data, TraceableMatrix::Write(), and TraceableMatrix::Writeln().
Referenced by SparseGridMtxLU().
void BackSubstU | ( | double * | x, | |
long | fixed_blocks | |||
) |
Definition at line 509 of file SparseGridMtxLU.cpp.
References SparseGridMtx::block_order, SparseGridMtx::block_size, SparseGridMtx::block_storage, SparseGridMtx::BlockArith, SparseGridColumn::column_start_idx, SparseGridMtx::Columns, Columns_data, Diagonal_data, SparseGridColumn::Entries, SparseGridColumn::IndexesUfa, IntArrayList::Items, DenseMatrixArithmetics::LU_Solve(), SparseGridMtx::N(), SparseGridMtx::n_blocks, no, Ordering::order, and DenseMatrixArithmetics::SubMultBlockByVector().
Referenced by SolveLU(), and Sub_A11inv_A12().
double & ElementAt | ( | int | i, | |
int | j | |||
) | [virtual] |
Implements ILargeMatrix.
Definition at line 35 of file SparseGridMtxLU.cpp.
References SparseGridMtx::block_order, SparseGridMtx::block_size, SparseGridMtx::block_storage, SparseGridColumn::column_start_idx, SparseGridMtx::Columns, Columns_data, Diagonal_data, SparseGridColumn::FindExistingBlockIndex(), IntArrayList::Items, SparseGridMtx::node_order, Ordering::perm, and Rows_data.
void Factorize | ( | ) | [virtual] |
Implements SparseGridMtx.
Definition at line 261 of file SparseGridMtxLU.cpp.
References MathTracer::act_block, SparseGridMtx::block_size, SparseGridMtx::block_storage, SparseGridMtx::BlockArith, MathTracer::break_flag, SparseGridColumn::column_start_idx, SparseGridMtx::Columns, Columns_data, SparseGridMtx::ComputeBlocks(), Diagonal_data, TraceableMatrix::eMT, SparseGridColumn::Entries, SparseGridColumn::IndexesUfa, IntArrayList::Items, long(), DenseMatrixArithmetics::LU_Decomposition(), memset(), SparseGridMtx::n_blocks, Rows_data, DenseMatrixArithmetics::SubATBproduct(), DenseMatrixArithmetics::ULT_BlockSolve(), TraceableMatrix::Write(), and DenseMatrixArithmetics::zero_pivots.
void ForwardSubstL | ( | double * | x, | |
long | fixed_blocks | |||
) |
Definition at line 483 of file SparseGridMtxLU.cpp.
References SparseGridMtx::block_order, SparseGridMtx::block_size, SparseGridMtx::block_storage, SparseGridMtx::BlockArith, SparseGridColumn::column_start_idx, SparseGridMtx::Columns, SparseGridColumn::Entries, SparseGridColumn::IndexesUfa, IntArrayList::Items, SparseGridMtx::N(), SparseGridMtx::n_blocks, no, Ordering::order, Rows_data, and DenseMatrixArithmetics::SubMultTBlockByVector().
Referenced by SolveLU(), and Sub_A21_A11inv().
double GetValue | ( | long | bi, | |
long | bj, | |||
long | si, | |||
long | sj, | |||
long & | aux_bi_idx, | |||
long & | aux_bj_idx | |||
) | [inline] |
Definition at line 35 of file SparseGridMtxLU.h.
References SparseGridMtx::block_storage, SparseGridMtx::Columns, Columns_data, Diagonal_data, SparseGridColumn::GetValue(), and Rows_data.
Referenced by WriteCondensedMatrixA22().
void LoadMatrixNumbers | ( | SparseMatrixF & | sm | ) | [virtual] |
Implements SparseGridMtx.
Definition at line 105 of file SparseGridMtxLU.cpp.
References SparseMatrixF::a, SparseMatrixF::Adr(), SparseGridMtx::block_order, SparseGridMtx::block_size, SparseGridMtx::block_storage, SparseMatrixF::Ci(), SparseGridColumn::column_start_idx, SparseGridMtx::Columns, Columns_data, Diagonal_data, SparseGridColumn::FindExistingBlockIndex(), IntArrayList::Items, LoadZeros(), long(), SparseMatrixF::neq, SparseGridMtx::node_order, SparseGridMtx::nonzeros, Ordering::perm, and Rows_data.
Referenced by SparseGridMtxLU().
void LoadZeros | ( | ) | [virtual] |
Implements ILargeMatrix.
Definition at line 81 of file SparseGridMtxLU.cpp.
References SparseGridMtx::block_order, SparseGridMtx::block_size, SparseGridMtx::block_storage, Columns_data, SparseGridMtx::columns_data_length, Diagonal_data, IntArrayList::Items, memset(), SparseGridMtx::n_blocks, SparseGridMtx::node_order, SparseGridMtx::noDummyDOFs, Ordering::perm, and Rows_data.
Referenced by LoadMatrixNumbers().
void MultiplyByVector | ( | const LargeVectorAttach & | x, | |
LargeVectorAttach & | y | |||
) | [virtual] |
Reimplemented from SparseGridMtx.
Definition at line 236 of file SparseGridMtxLU.cpp.
void SchurComplementFactorization | ( | int | fixed_blocks | ) | [virtual] |
Implements SparseGridMtx.
Definition at line 358 of file SparseGridMtxLU.cpp.
References MathTracer::act_block, SparseGridMtx::block_size, SparseGridMtx::block_storage, SparseGridMtx::BlockArith, MathTracer::break_flag, SparseGridColumn::column_start_idx, SparseGridMtx::Columns, Columns_data, SparseGridMtx::ComputeBlocks(), Diagonal_data, TraceableMatrix::eMT, SparseGridColumn::Entries, SparseGridColumn::IndexesUfa, IntArrayList::Items, DenseMatrixArithmetics::LU_Decomposition(), memset(), SparseGridMtx::n_blocks, Rows_data, DenseMatrixArithmetics::SubATBproduct(), DenseMatrixArithmetics::ULT_BlockSolve(), and DenseMatrixArithmetics::zero_pivots.
void Solve | ( | double * | b, | |
double * | x | |||
) | [virtual] |
Implements SparseGridMtx.
Definition at line 468 of file SparseGridMtxLU.cpp.
References Array::Copy(), SparseGridMtx::n, and SolveLU().
void SolveA11 | ( | double * | x, | |
long | fixed_blocks | |||
) | [virtual] |
void SolveLU | ( | double * | x, | |
long | fixed_blocks = 0 | |||
) |
Definition at line 537 of file SparseGridMtxLU.cpp.
References BackSubstU(), and ForwardSubstL().
Referenced by Solve(), SolveA11(), and SolveLV().
void SolveLV | ( | const LargeVector & | b, | |
LargeVector & | x | |||
) | [virtual] |
Implements SparseGridMtx.
Definition at line 475 of file SparseGridMtxLU.cpp.
References LargeVectorAttach::DataPtr(), LargeVectorAttach::Initialize(), SparseGridMtx::n, and SolveLU().
void Sub_A11inv_A12 | ( | double * | x, | |
long | fixed_blocks | |||
) | [virtual] |
Implements SparseGridMtx.
Definition at line 610 of file SparseGridMtxLU.cpp.
References BackSubstU(), and SubMultU12().
void Sub_A21_A11inv | ( | double * | x, | |
long | fixed_blocks | |||
) | [virtual] |
Implements SparseGridMtx.
Definition at line 601 of file SparseGridMtxLU.cpp.
References ForwardSubstL(), and SubMultL21().
void SubMultL21 | ( | double * | px, | |
double * | py, | |||
long | fixed_blocks | |||
) |
y -= L12 * x
Definition at line 569 of file SparseGridMtxLU.cpp.
References SparseGridMtx::block_order, SparseGridMtx::block_size, SparseGridMtx::block_storage, SparseGridMtx::BlockArith, SparseGridColumn::column_start_idx, SparseGridMtx::Columns, SparseGridColumn::Entries, SparseGridColumn::IndexesUfa, IntArrayList::Items, SparseGridMtx::n_blocks, no, Ordering::order, Rows_data, and DenseMatrixArithmetics::SubMultTBlockByVector().
Referenced by Sub_A21_A11inv().
void SubMultU12 | ( | double * | px, | |
double * | py, | |||
long | fixed_blocks | |||
) |
y -= U12 * x
Definition at line 544 of file SparseGridMtxLU.cpp.
References SparseGridMtx::block_order, SparseGridMtx::block_size, SparseGridMtx::block_storage, SparseGridMtx::BlockArith, SparseGridColumn::column_start_idx, SparseGridMtx::Columns, Columns_data, SparseGridColumn::Entries, SparseGridColumn::IndexesUfa, IntArrayList::Items, SparseGridMtx::n_blocks, no, Ordering::order, and DenseMatrixArithmetics::SubMultBlockByVector().
Referenced by Sub_A11inv_A12().
void WriteCondensedMatrixA22 | ( | double * | a, | |
Ordering * | mcn, | |||
IntArrayList * | lncn | |||
) | [virtual] |
Implements SparseGridMtx.
Definition at line 617 of file SparseGridMtxLU.cpp.
References SparseGridMtx::block_order, SparseGridMtx::BlockSize(), IntArrayList::Count, GetValue(), IntArrayList::Items, and Ordering::perm.
double* Columns_data |
Definition at line 29 of file SparseGridMtxLU.h.
Referenced by AlocateMemoryByPattern(), BackSubstU(), ElementAt(), Factorize(), GetValue(), LoadMatrixNumbers(), LoadZeros(), SchurComplementFactorization(), SubMultU12(), and ~SparseGridMtxLU().
double* Diagonal_data |
Definition at line 31 of file SparseGridMtxLU.h.
Referenced by AlocateMemoryByPattern(), BackSubstU(), ElementAt(), Factorize(), GetValue(), LoadMatrixNumbers(), LoadZeros(), SchurComplementFactorization(), and ~SparseGridMtxLU().
double* Rows_data |
Definition at line 30 of file SparseGridMtxLU.h.
Referenced by AlocateMemoryByPattern(), ElementAt(), Factorize(), ForwardSubstL(), GetValue(), LoadMatrixNumbers(), LoadZeros(), SchurComplementFactorization(), SubMultL21(), and ~SparseGridMtxLU().