KratosMultiphysics
KRATOS Multiphysics (Kratos) is a framework for building parallel, multi-disciplinary simulation software, aiming at modularity, extensibility, and high performance. Kratos is written in C++, and counts with an extensive Python interface.
Public Types | Public Member Functions | Public Attributes | List of all members
Kratos::LUSkylineFactorization< TSparseSpaceType, TDenseSpaceType > Class Template Reference

#include <skyline_lu_factorization_solver.h>

Collaboration diagram for Kratos::LUSkylineFactorization< TSparseSpaceType, TDenseSpaceType >:

Public Types

typedef TSparseSpaceType::MatrixType SparseMatrixType
 
typedef TSparseSpaceType::VectorType VectorType
 
typedef TDenseSpaceType::MatrixType DenseMatrixType
 
typedef std::size_t IndexType
 

Public Member Functions

void clear ()
 
void copyFromCSRMatrix (SparseMatrixType &A)
 
void factorize ()
 
void backForwardSolve (int vector_size, const VectorType &b, VectorType &x)
 
 LUSkylineFactorization ()
 
 ~LUSkylineFactorization ()
 

Public Attributes

int size
 
introwIndex
 
intperm
 
doubleentriesL
 
doubleentriesD
 
doubleentriesU
 

Member Typedef Documentation

◆ DenseMatrixType

template<class TSparseSpaceType , class TDenseSpaceType >
typedef TDenseSpaceType::MatrixType Kratos::LUSkylineFactorization< TSparseSpaceType, TDenseSpaceType >::DenseMatrixType

◆ IndexType

template<class TSparseSpaceType , class TDenseSpaceType >
typedef std::size_t Kratos::LUSkylineFactorization< TSparseSpaceType, TDenseSpaceType >::IndexType

◆ SparseMatrixType

template<class TSparseSpaceType , class TDenseSpaceType >
typedef TSparseSpaceType::MatrixType Kratos::LUSkylineFactorization< TSparseSpaceType, TDenseSpaceType >::SparseMatrixType

◆ VectorType

template<class TSparseSpaceType , class TDenseSpaceType >
typedef TSparseSpaceType::VectorType Kratos::LUSkylineFactorization< TSparseSpaceType, TDenseSpaceType >::VectorType

Constructor & Destructor Documentation

◆ LUSkylineFactorization()

template<class TSparseSpaceType , class TDenseSpaceType >
Kratos::LUSkylineFactorization< TSparseSpaceType, TDenseSpaceType >::LUSkylineFactorization ( )
inline

◆ ~LUSkylineFactorization()

template<class TSparseSpaceType , class TDenseSpaceType >
Kratos::LUSkylineFactorization< TSparseSpaceType, TDenseSpaceType >::~LUSkylineFactorization ( )
inline

Member Function Documentation

◆ backForwardSolve()

template<class TSparseSpaceType , class TDenseSpaceType >
void Kratos::LUSkylineFactorization< TSparseSpaceType, TDenseSpaceType >::backForwardSolve ( int  vector_size,
const VectorType b,
VectorType x 
)
inline

◆ clear()

template<class TSparseSpaceType , class TDenseSpaceType >
void Kratos::LUSkylineFactorization< TSparseSpaceType, TDenseSpaceType >::clear ( )
inline

◆ copyFromCSRMatrix()

template<class TSparseSpaceType , class TDenseSpaceType >
void Kratos::LUSkylineFactorization< TSparseSpaceType, TDenseSpaceType >::copyFromCSRMatrix ( SparseMatrixType A)
inline

◆ factorize()

template<class TSparseSpaceType , class TDenseSpaceType >
void Kratos::LUSkylineFactorization< TSparseSpaceType, TDenseSpaceType >::factorize ( )
inline

Perform and in-place LU factorization of a skyline matrix by Crout's algorithm. The diagonal of U contains the 1's. The equivalent MATLAB code for a full matrix would be: for k=1:n-1 A(1,k+1)=A(1,k+1)/A(1,1); for i=2:k sum=A(i,k+1); for j=1:i-1; sum=sum-A(i,j)*A(j,k+1); end; A(i,k+1)=sum/A(i,i); end for i=2:k sum=A(k+1,i); for j=1:i-1; sum=sum-A(j,i)*A(k+1,j); end; A(k+1,i)=sum; end sum=A(k+1,k+1); for i=1:k; sum=sum-A(k+1,i)*A(i,k+1); end; A(k+1,k+1)=sum; end

Member Data Documentation

◆ entriesD

template<class TSparseSpaceType , class TDenseSpaceType >
double* Kratos::LUSkylineFactorization< TSparseSpaceType, TDenseSpaceType >::entriesD

◆ entriesL

template<class TSparseSpaceType , class TDenseSpaceType >
double* Kratos::LUSkylineFactorization< TSparseSpaceType, TDenseSpaceType >::entriesL

◆ entriesU

template<class TSparseSpaceType , class TDenseSpaceType >
double* Kratos::LUSkylineFactorization< TSparseSpaceType, TDenseSpaceType >::entriesU

◆ perm

template<class TSparseSpaceType , class TDenseSpaceType >
int* Kratos::LUSkylineFactorization< TSparseSpaceType, TDenseSpaceType >::perm

◆ rowIndex

template<class TSparseSpaceType , class TDenseSpaceType >
int* Kratos::LUSkylineFactorization< TSparseSpaceType, TDenseSpaceType >::rowIndex

◆ size

template<class TSparseSpaceType , class TDenseSpaceType >
int Kratos::LUSkylineFactorization< TSparseSpaceType, TDenseSpaceType >::size

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