PLaSK library
Loading...
Searching...
No Matches
plask::DgbMatrix Struct Reference

Symmetric band matrix structure. More...

#include <plask/common/fem/gauss_matrix.hpp>

Inheritance diagram for plask::DgbMatrix:
[legend]
Collaboration diagram for plask::DgbMatrix:
[legend]

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)
 
doubleoperator() (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
 
void mult (const DataVector< const double > &vector, DataVector< double > &result) override
 Multiply matrix by vector.
 
void addmult (const DataVector< const double > &vector, DataVector< double > &result) override
 Multiply matrix by vector adding the result.
 
- Public Member Functions inherited from plask::BandMatrix< T >
 BandMatrix (const Solver *solver, size_t rank, size_t kd, size_t ld)
 
void setBC (DataVector< T > &B, size_t r, T val) override
 Set Dirichlet boundary condition.
 
std::string describe () const override
 
- Public Member Functions inherited from plask::FemMatrix< T >
 FemMatrix (const Solver *solver, size_t rank, size_t size)
 
 FemMatrix (const FemMatrix &)=delete
 
virtual ~FemMatrix ()
 
virtual void clear ()
 Clear the matrix.
 
virtual void solverhs (DataVector< T > &B, DataVector< T > &X)=0
 Solve for the right-hand-side of a system of linear equations.
 
void solve (DataVector< T > &B, DataVector< T > &X)
 Solve the set of linear equations.
 
void solve (DataVector< T > &B)
 Solve the set of linear equations.
 
virtual void mult (const DataVector< const T > &vector, DataVector< T > &result)=0
 Multiply matrix by vector.
 
virtual void addmult (const DataVector< const T > &vector, DataVector< T > &result)=0
 Multiply matrix by vector adding the result.
 
template<typename BoundaryConditonsT >
void applyBC (const BoundaryConditonsT &bconds, DataVector< T > &B)
 Apply Dirichlet boundary conditions.
 

Public Attributes

const size_t shift
 Shift of the diagonal.
 
aligned_unique_ptr< intipiv
 
- Public Attributes inherited from plask::BandMatrix< T >
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< T >
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.
 
T * data
 Pointer to data.
 
const Solversolver
 Solver owning the matrix.
 

Detailed Description

Symmetric band matrix structure.

Data is stored in LAPACK format.

Definition at line 60 of file gauss_matrix.hpp.

Constructor & Destructor Documentation

◆ DgbMatrix() [1/2]

plask::DgbMatrix::DgbMatrix ( const Solver solver,
size_t  rank,
size_t  band 
)
inline

Create matrix.

Parameters
rankrank of the matrix
bandband size

Definition at line 70 of file gauss_matrix.hpp.

◆ DgbMatrix() [2/2]

plask::DgbMatrix::DgbMatrix ( const DgbMatrix )
delete

Member Function Documentation

◆ addmult()

void plask::DgbMatrix::addmult ( const DataVector< const double > &  vector,
DataVector< double > &  result 
)
inlineoverride

Multiply matrix by vector adding the result.

Parameters
vectorvector to multiply
resultmultiplication result

Definition at line 132 of file gauss_matrix.hpp.

◆ factorize()

void plask::DgbMatrix::factorize ( )
inlineoverridevirtual

Factorize the matrix in advance to speed up the solution.

Parameters
solversolver to use

Reimplemented from plask::FemMatrix< T >.

Definition at line 90 of file gauss_matrix.hpp.

◆ index()

size_t plask::DgbMatrix::index ( size_t  r,
size_t  c 
)
inline

Definition at line 76 of file gauss_matrix.hpp.

◆ mult()

void plask::DgbMatrix::mult ( const DataVector< const double > &  vector,
DataVector< double > &  result 
)
inlineoverride

Multiply matrix by vector.

Parameters
vectorvector to multiply
resultmultiplication result

Definition at line 122 of file gauss_matrix.hpp.

◆ operator()()

double & plask::DgbMatrix::operator() ( size_t  r,
size_t  c 
)
inlineoverridevirtual

Return reference to array element.

Parameters
rindex of the element row
cindex of the element column

Implements plask::FemMatrix< T >.

Definition at line 88 of file gauss_matrix.hpp.

◆ solverhs()

void plask::DgbMatrix::solverhs ( DataVector< double > &  B,
DataVector< double > &  X 
)
inlineoverride

Definition at line 107 of file gauss_matrix.hpp.

Member Data Documentation

◆ ipiv

aligned_unique_ptr<int> plask::DgbMatrix::ipiv

Definition at line 63 of file gauss_matrix.hpp.

◆ shift

const size_t plask::DgbMatrix::shift

Shift of the diagonal.

Definition at line 61 of file gauss_matrix.hpp.


The documentation for this struct was generated from the following file: