PLaSK library
|
Symmetric band matrix structure. More...
#include <plask/common/fem/gauss_matrix.hpp>
Public Member Functions | |
DgbMatrix (const Solver *solver, size_t rank, size_t band) | |
Create matrix. | |
DgbMatrix (const DgbMatrix &)=delete | |
size_t | index (size_t r, size_t c) |
double & | operator() (size_t r, size_t c) override |
Return reference to array element. | |
void | factorize () override |
Factorize the matrix in advance to speed up the solution. | |
void | solverhs (DataVector< double > &B, DataVector< double > &X) override |
Solve for the right-hand-side of a system of linear equations. | |
void | mult (const DataVector< const double > &vector, DataVector< double > &result) |
Multiply matrix by vector. | |
void | addmult (const DataVector< const double > &vector, DataVector< double > &result) |
Multiply matrix by vector adding the result. | |
Public Member Functions inherited from plask::BandMatrix | |
BandMatrix (const Solver *solver, size_t rank, size_t kd, size_t ld) | |
void | setBC (DataVector< double > &B, size_t r, double val) override |
Set Dirichlet boundary condition. | |
std::string | describe () const override |
Public Member Functions inherited from plask::FemMatrix | |
FemMatrix (const Solver *solver, size_t rank, size_t size) | |
FemMatrix (const FemMatrix &)=delete | |
virtual | ~FemMatrix () |
virtual void | clear () |
Clear the matrix. | |
void | solve (DataVector< double > &B, DataVector< double > &X) |
Solve the set of linear equations. | |
void | solve (DataVector< double > &B) |
Solve the set of linear equations. | |
template<typename BoundaryConditonsT > | |
void | applyBC (const BoundaryConditonsT &bconds, DataVector< double > &B) |
Apply Dirichlet boundary conditions. | |
Public Attributes | |
const size_t | shift |
Shift of the diagonal. | |
aligned_unique_ptr< int > | ipiv |
Public Attributes inherited from plask::BandMatrix | |
const size_t | ld |
leading dimension of the matrix | |
const size_t | kd |
Size of the band reduced by one. | |
Public Attributes inherited from plask::FemMatrix | |
const size_t | rank |
Order of the matrix, i.e. number of columns or rows. | |
const size_t | size |
Number of stored elements in the matrix. | |
double * | data |
Pointer to data. | |
const Solver * | solver |
Solver owning the matrix. | |
Symmetric band matrix structure.
Data is stored in LAPACK format.
Definition at line 60 of file gauss_matrix.hpp.
Create matrix.
rank | rank of the matrix |
band | band size |
Definition at line 70 of file gauss_matrix.hpp.
|
inlinevirtual |
Multiply matrix by vector adding the result.
vector | vector to multiply |
result | multiplication result |
Implements plask::FemMatrix.
Definition at line 132 of file gauss_matrix.hpp.
|
inlineoverridevirtual |
Factorize the matrix in advance to speed up the solution.
solver | solver to use |
Reimplemented from plask::FemMatrix.
Definition at line 90 of file gauss_matrix.hpp.
|
inline |
Definition at line 76 of file gauss_matrix.hpp.
|
inlinevirtual |
Multiply matrix by vector.
vector | vector to multiply |
result | multiplication result |
Implements plask::FemMatrix.
Definition at line 122 of file gauss_matrix.hpp.
|
inlineoverridevirtual |
Return reference to array element.
r | index of the element row |
c | index of the element column |
Implements plask::FemMatrix.
Definition at line 88 of file gauss_matrix.hpp.
|
inlineoverridevirtual |
Solve for the right-hand-side of a system of linear equations.
solver | solver to use | |
[in,out] | B | right hand side of the equation, on output may be interchanged with X |
[in,out] | X | initial estimate of the solution, on output contains the solution (may be interchanged with B) |
Implements plask::FemMatrix.
Definition at line 107 of file gauss_matrix.hpp.
aligned_unique_ptr<int> plask::DgbMatrix::ipiv |
Definition at line 63 of file gauss_matrix.hpp.
const size_t plask::DgbMatrix::shift |
Shift of the diagonal.
Definition at line 61 of file gauss_matrix.hpp.