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.
List of all members
Kratos::PowerIterationEigenvalueSolver< TSparseSpaceType, TDenseSpaceType, TLinearSolverType, TPreconditionerType, TReordererType > Class Template Reference

This class uses the inverted power iteration method to obtain the lowest eigenvalue of a system. More...

#include <power_iteration_eigenvalue_solver.h>

Inheritance diagram for Kratos::PowerIterationEigenvalueSolver< TSparseSpaceType, TDenseSpaceType, TLinearSolverType, TPreconditionerType, TReordererType >:
Collaboration diagram for Kratos::PowerIterationEigenvalueSolver< TSparseSpaceType, TDenseSpaceType, TLinearSolverType, TPreconditionerType, TReordererType >:

Public Member Functions

Life Cycle
 PowerIterationEigenvalueSolver ()
 Default constructor. More...
 
 PowerIterationEigenvalueSolver (double MaxTolerance, unsigned int MaxIterationNumber, unsigned int RequiredEigenvalueNumber, typename TLinearSolverType::Pointer pLinearSolver)
 Alternative constructor. More...
 
 PowerIterationEigenvalueSolver (Parameters ThisParameters, typename TLinearSolverType::Pointer pLinearSolver)
 Alternative constructor. More...
 
 PowerIterationEigenvalueSolver (const PowerIterationEigenvalueSolver &Other)
 Copy constructor. More...
 
 ~PowerIterationEigenvalueSolver () override
 Destructor. More...
 
Operators
PowerIterationEigenvalueSolveroperator= (const PowerIterationEigenvalueSolver &Other)
 Assignment operator. More...
 
Operations
void Solve (SparseMatrixType &K, SparseMatrixType &M, DenseVectorType &Eigenvalues, DenseMatrixType &Eigenvectors) override
 The power iteration algorithm. More...
 
Input and output
std::string Info () const override
 Turn back information as a string. More...
 
void PrintInfo (std::ostream &rOStream) const override
 Print information about this object. More...
 
void PrintData (std::ostream &rOStream) const override
 Print object's data. More...
 
- Public Member Functions inherited from Kratos::IterativeSolver< TSparseSpaceType, TDenseSpaceType, Preconditioner< TSparseSpaceType, TDenseSpaceType >, Reorderer< TSparseSpaceType, TDenseSpaceType > >
 IterativeSolver ()
 Default constructor. More...
 
 IterativeSolver (double NewTolerance)
 
 IterativeSolver (double NewTolerance, unsigned int NewMaxIterationsNumber)
 
 IterativeSolver (double NewTolerance, unsigned int NewMaxIterationsNumber, typename TPreconditionerType::Pointer pNewPreconditioner)
 
 IterativeSolver (Parameters settings, typename TPreconditionerType::Pointer pNewPreconditioner=Kratos::make_shared< Preconditioner< TSparseSpaceType, TDenseSpaceType > >())
 
 IterativeSolver (const IterativeSolver &Other)
 Copy constructor. More...
 
 ~IterativeSolver () override
 Destructor. More...
 
IterativeSolveroperator= (const IterativeSolver &Other)
 Assignment operator. More...
 
void InitializeSolutionStep (SparseMatrixType &rA, VectorType &rX, VectorType &rB) override
 
void FinalizeSolutionStep (SparseMatrixType &rA, VectorType &rX, VectorType &rB) override
 
void Clear () override
 
bool AdditionalPhysicalDataIsNeeded () override
 
void ProvideAdditionalData (SparseMatrixType &rA, VectorType &rX, VectorType &rB, typename ModelPart::DofsArrayType &rdof_set, ModelPart &r_model_part) override
 
virtual TPreconditionerType::Pointer GetPreconditioner (void)
 
virtual const TPreconditionerType::Pointer GetPreconditioner (void) const
 
virtual void SetPreconditioner (typename TPreconditionerType::Pointer pNewPreconditioner)
 
virtual void SetMaxIterationsNumber (unsigned int NewMaxIterationsNumber)
 
virtual IndexType GetMaxIterationsNumber ()
 
virtual void SetIterationsNumber (unsigned int NewIterationNumber)
 
IndexType GetIterationsNumber () override
 
void SetTolerance (double NewTolerance) override
 This method allows to set the tolerance in the linear solver. More...
 
double GetTolerance () override
 This method allows to get the tolerance in the linear solver. More...
 
virtual void SetResidualNorm (double NewResidualNorm)
 
virtual double GetResidualNorm ()
 
virtual bool IterationNeeded ()
 
virtual bool IsConverged ()
 
std::string Info () const override
 Turn back information as a string. More...
 
void PrintInfo (std::ostream &rOStream) const override
 Print information about this object. More...
 
void PrintData (std::ostream &rOStream) const override
 Print object's data. More...
 
 KRATOS_CLASS_POINTER_DEFINITION (IterativeSolver)
 Pointer definition of IterativeSolver. More...
 
- Public Member Functions inherited from Kratos::LinearSolver< TSparseSpaceType, TDenseSpaceType, Reorderer< TSparseSpaceType, TDenseSpaceType > >
 LinearSolver ()
 Default constructor. More...
 
 LinearSolver (Reorderer< TSparseSpaceType, TDenseSpaceType > NewReorderer)
 Constructor with specific reorderer. More...
 
 LinearSolver (const LinearSolver &Other)
 Copy constructor. More...
 
virtual ~LinearSolver ()
 Destructor. More...
 
LinearSolveroperator= (const LinearSolver &Other)
 Assignment operator. More...
 
virtual void Initialize (SparseMatrixType &rA, VectorType &rX, VectorType &rB)
 
virtual void PerformSolutionStep (SparseMatrixType &rA, VectorType &rX, VectorType &rB)
 
virtual bool Solve (SparseMatrixType &rA, VectorType &rX, VectorType &rB)
 
virtual bool Solve (SparseMatrixType &rA, DenseMatrixType &rX, DenseMatrixType &rB)
 
virtual TReordererType::Pointer GetReorderer ()
 
virtual void SetReorderer (typename TReordererType::Pointer pNewReorderer)
 
virtual bool IsConsistent (SparseMatrixType &rA, VectorType &rX, VectorType &rB)
 This method checks if the dimensions of the system of equations are consistent. More...
 
virtual bool IsConsistent (SparseMatrixType &rA, DenseMatrixType &rX, DenseMatrixType &rB)
 This method checks if the dimensions of the system of equations are consistent (dense matrix for RHS and unknowns version) More...
 
virtual bool IsNotConsistent (SparseMatrixType &rA, VectorType &rX, VectorType &rB)
 This method checks if the dimensions of the system of equations are not consistent. More...
 
virtual bool IsNotConsistent (SparseMatrixType &rA, DenseMatrixType &rX, DenseMatrixType &rB)
 This method checks if the dimensions of the system of equations are not consistent. More...
 
 KRATOS_CLASS_POINTER_DEFINITION (LinearSolver)
 Pointer definition of LinearSolver. More...
 

Type Definitions

typedef IterativeSolver< TSparseSpaceType, TDenseSpaceType, TPreconditionerType, TReordererType > BaseType
 
typedef TSparseSpaceType::MatrixType SparseMatrixType
 
typedef TSparseSpaceType::VectorType VectorType
 
typedef TDenseSpaceType::MatrixType DenseMatrixType
 
typedef TDenseSpaceType::VectorType DenseVectorType
 
typedef std::size_t SizeType
 
typedef std::size_t IndexType
 
 KRATOS_CLASS_POINTER_DEFINITION (PowerIterationEigenvalueSolver)
 Pointer definition of PowerIterationEigenvalueSolver. More...
 

Additional Inherited Members

- Public Types inherited from Kratos::IterativeSolver< TSparseSpaceType, TDenseSpaceType, Preconditioner< TSparseSpaceType, TDenseSpaceType >, Reorderer< TSparseSpaceType, TDenseSpaceType > >
typedef LinearSolver< TSparseSpaceType, TDenseSpaceType, Reorderer< TSparseSpaceType, TDenseSpaceType > > BaseType
 
typedef TSparseSpaceType::MatrixType SparseMatrixType
 
typedef TSparseSpaceType::VectorType VectorType
 
typedef TDenseSpaceType::MatrixType DenseMatrixType
 
typedef Preconditioner< TSparseSpaceType, TDenseSpaceType > PreconditionerType
 
typedef TSparseSpaceType::IndexType IndexType
 The index type definition to be consistent. More...
 
- Public Types inherited from Kratos::LinearSolver< TSparseSpaceType, TDenseSpaceType, Reorderer< TSparseSpaceType, TDenseSpaceType > >
typedef TSparseSpaceType::MatrixType SparseMatrixType
 
typedef TSparseSpaceType::MatrixPointerType SparseMatrixPointerType
 
typedef TSparseSpaceType::VectorType VectorType
 
typedef TSparseSpaceType::VectorPointerType VectorPointerType
 
typedef TDenseSpaceType::MatrixType DenseMatrixType
 
typedef TDenseSpaceType::VectorType DenseVectorType
 
typedef std::size_t SizeType
 
typedef TSparseSpaceType::IndexType IndexType
 The index type definition to be consistent. More...
 
- Protected Member Functions inherited from Kratos::IterativeSolver< TSparseSpaceType, TDenseSpaceType, Preconditioner< TSparseSpaceType, TDenseSpaceType >, Reorderer< TSparseSpaceType, TDenseSpaceType > >
void PreconditionedMult (SparseMatrixType &rA, VectorType &rX, VectorType &rY)
 
void PreconditionedTransposeMult (SparseMatrixType &rA, VectorType &rX, VectorType &rY)
 
- Protected Attributes inherited from Kratos::IterativeSolver< TSparseSpaceType, TDenseSpaceType, Preconditioner< TSparseSpaceType, TDenseSpaceType >, Reorderer< TSparseSpaceType, TDenseSpaceType > >
double mResidualNorm
 
double mFirstResidualNorm
 
IndexType mIterationsNumber
 
double mBNorm
 

Detailed Description

template<class TSparseSpaceType, class TDenseSpaceType, class TLinearSolverType, class TPreconditionerType = Preconditioner<TSparseSpaceType, TDenseSpaceType>, class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
class Kratos::PowerIterationEigenvalueSolver< TSparseSpaceType, TDenseSpaceType, TLinearSolverType, TPreconditionerType, TReordererType >

This class uses the inverted power iteration method to obtain the lowest eigenvalue of a system.

The solver has different constructors, so can be constructed with the different parameters of using kartos parameters

See also
IterativeSolver
Author
Pooyan Dadvand
Vicente Mataix Ferrandiz

Member Typedef Documentation

◆ BaseType

template<class TSparseSpaceType , class TDenseSpaceType , class TLinearSolverType , class TPreconditionerType = Preconditioner<TSparseSpaceType, TDenseSpaceType>, class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
typedef IterativeSolver<TSparseSpaceType, TDenseSpaceType, TPreconditionerType, TReordererType> Kratos::PowerIterationEigenvalueSolver< TSparseSpaceType, TDenseSpaceType, TLinearSolverType, TPreconditionerType, TReordererType >::BaseType

◆ DenseMatrixType

template<class TSparseSpaceType , class TDenseSpaceType , class TLinearSolverType , class TPreconditionerType = Preconditioner<TSparseSpaceType, TDenseSpaceType>, class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
typedef TDenseSpaceType::MatrixType Kratos::PowerIterationEigenvalueSolver< TSparseSpaceType, TDenseSpaceType, TLinearSolverType, TPreconditionerType, TReordererType >::DenseMatrixType

◆ DenseVectorType

template<class TSparseSpaceType , class TDenseSpaceType , class TLinearSolverType , class TPreconditionerType = Preconditioner<TSparseSpaceType, TDenseSpaceType>, class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
typedef TDenseSpaceType::VectorType Kratos::PowerIterationEigenvalueSolver< TSparseSpaceType, TDenseSpaceType, TLinearSolverType, TPreconditionerType, TReordererType >::DenseVectorType

◆ IndexType

template<class TSparseSpaceType , class TDenseSpaceType , class TLinearSolverType , class TPreconditionerType = Preconditioner<TSparseSpaceType, TDenseSpaceType>, class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
typedef std::size_t Kratos::PowerIterationEigenvalueSolver< TSparseSpaceType, TDenseSpaceType, TLinearSolverType, TPreconditionerType, TReordererType >::IndexType

◆ SizeType

template<class TSparseSpaceType , class TDenseSpaceType , class TLinearSolverType , class TPreconditionerType = Preconditioner<TSparseSpaceType, TDenseSpaceType>, class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
typedef std::size_t Kratos::PowerIterationEigenvalueSolver< TSparseSpaceType, TDenseSpaceType, TLinearSolverType, TPreconditionerType, TReordererType >::SizeType

◆ SparseMatrixType

template<class TSparseSpaceType , class TDenseSpaceType , class TLinearSolverType , class TPreconditionerType = Preconditioner<TSparseSpaceType, TDenseSpaceType>, class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
typedef TSparseSpaceType::MatrixType Kratos::PowerIterationEigenvalueSolver< TSparseSpaceType, TDenseSpaceType, TLinearSolverType, TPreconditionerType, TReordererType >::SparseMatrixType

◆ VectorType

template<class TSparseSpaceType , class TDenseSpaceType , class TLinearSolverType , class TPreconditionerType = Preconditioner<TSparseSpaceType, TDenseSpaceType>, class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
typedef TSparseSpaceType::VectorType Kratos::PowerIterationEigenvalueSolver< TSparseSpaceType, TDenseSpaceType, TLinearSolverType, TPreconditionerType, TReordererType >::VectorType

Constructor & Destructor Documentation

◆ PowerIterationEigenvalueSolver() [1/4]

template<class TSparseSpaceType , class TDenseSpaceType , class TLinearSolverType , class TPreconditionerType = Preconditioner<TSparseSpaceType, TDenseSpaceType>, class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
Kratos::PowerIterationEigenvalueSolver< TSparseSpaceType, TDenseSpaceType, TLinearSolverType, TPreconditionerType, TReordererType >::PowerIterationEigenvalueSolver ( )
inline

Default constructor.

◆ PowerIterationEigenvalueSolver() [2/4]

template<class TSparseSpaceType , class TDenseSpaceType , class TLinearSolverType , class TPreconditionerType = Preconditioner<TSparseSpaceType, TDenseSpaceType>, class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
Kratos::PowerIterationEigenvalueSolver< TSparseSpaceType, TDenseSpaceType, TLinearSolverType, TPreconditionerType, TReordererType >::PowerIterationEigenvalueSolver ( double  MaxTolerance,
unsigned int  MaxIterationNumber,
unsigned int  RequiredEigenvalueNumber,
typename TLinearSolverType::Pointer  pLinearSolver 
)
inline

Alternative constructor.

It uses additional variables to be initialized

Parameters
MaxToleranceThe maximal tolerance used as threshold for convergence
MaxIterationNumberThe maximal number of iterations to be considered
RequiredEigenvalueNumberThe required eigen value number
pLinearSolverThe linear solver used to solve the system of equations

◆ PowerIterationEigenvalueSolver() [3/4]

template<class TSparseSpaceType , class TDenseSpaceType , class TLinearSolverType , class TPreconditionerType = Preconditioner<TSparseSpaceType, TDenseSpaceType>, class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
Kratos::PowerIterationEigenvalueSolver< TSparseSpaceType, TDenseSpaceType, TLinearSolverType, TPreconditionerType, TReordererType >::PowerIterationEigenvalueSolver ( Parameters  ThisParameters,
typename TLinearSolverType::Pointer  pLinearSolver 
)
inline

Alternative constructor.

It uses a Kratos parameters to set the different variables and parameters

Parameters
ThisParametersThe parameters taht contain the different parameters for configuration
pLinearSolverThe linear solver used to solve the system of equations

◆ PowerIterationEigenvalueSolver() [4/4]

template<class TSparseSpaceType , class TDenseSpaceType , class TLinearSolverType , class TPreconditionerType = Preconditioner<TSparseSpaceType, TDenseSpaceType>, class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
Kratos::PowerIterationEigenvalueSolver< TSparseSpaceType, TDenseSpaceType, TLinearSolverType, TPreconditionerType, TReordererType >::PowerIterationEigenvalueSolver ( const PowerIterationEigenvalueSolver< TSparseSpaceType, TDenseSpaceType, TLinearSolverType, TPreconditionerType, TReordererType > &  Other)
inline

Copy constructor.

◆ ~PowerIterationEigenvalueSolver()

template<class TSparseSpaceType , class TDenseSpaceType , class TLinearSolverType , class TPreconditionerType = Preconditioner<TSparseSpaceType, TDenseSpaceType>, class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
Kratos::PowerIterationEigenvalueSolver< TSparseSpaceType, TDenseSpaceType, TLinearSolverType, TPreconditionerType, TReordererType >::~PowerIterationEigenvalueSolver ( )
inlineoverride

Destructor.

Member Function Documentation

◆ Info()

template<class TSparseSpaceType , class TDenseSpaceType , class TLinearSolverType , class TPreconditionerType = Preconditioner<TSparseSpaceType, TDenseSpaceType>, class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
std::string Kratos::PowerIterationEigenvalueSolver< TSparseSpaceType, TDenseSpaceType, TLinearSolverType, TPreconditionerType, TReordererType >::Info ( ) const
inlineoverridevirtual

◆ KRATOS_CLASS_POINTER_DEFINITION()

template<class TSparseSpaceType , class TDenseSpaceType , class TLinearSolverType , class TPreconditionerType = Preconditioner<TSparseSpaceType, TDenseSpaceType>, class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
Kratos::PowerIterationEigenvalueSolver< TSparseSpaceType, TDenseSpaceType, TLinearSolverType, TPreconditionerType, TReordererType >::KRATOS_CLASS_POINTER_DEFINITION ( PowerIterationEigenvalueSolver< TSparseSpaceType, TDenseSpaceType, TLinearSolverType, TPreconditionerType, TReordererType >  )

Pointer definition of PowerIterationEigenvalueSolver.

◆ operator=()

template<class TSparseSpaceType , class TDenseSpaceType , class TLinearSolverType , class TPreconditionerType = Preconditioner<TSparseSpaceType, TDenseSpaceType>, class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
PowerIterationEigenvalueSolver& Kratos::PowerIterationEigenvalueSolver< TSparseSpaceType, TDenseSpaceType, TLinearSolverType, TPreconditionerType, TReordererType >::operator= ( const PowerIterationEigenvalueSolver< TSparseSpaceType, TDenseSpaceType, TLinearSolverType, TPreconditionerType, TReordererType > &  Other)
inline

Assignment operator.

◆ PrintData()

template<class TSparseSpaceType , class TDenseSpaceType , class TLinearSolverType , class TPreconditionerType = Preconditioner<TSparseSpaceType, TDenseSpaceType>, class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
void Kratos::PowerIterationEigenvalueSolver< TSparseSpaceType, TDenseSpaceType, TLinearSolverType, TPreconditionerType, TReordererType >::PrintData ( std::ostream &  rOStream) const
inlineoverridevirtual

◆ PrintInfo()

template<class TSparseSpaceType , class TDenseSpaceType , class TLinearSolverType , class TPreconditionerType = Preconditioner<TSparseSpaceType, TDenseSpaceType>, class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
void Kratos::PowerIterationEigenvalueSolver< TSparseSpaceType, TDenseSpaceType, TLinearSolverType, TPreconditionerType, TReordererType >::PrintInfo ( std::ostream &  rOStream) const
inlineoverridevirtual

◆ Solve()

template<class TSparseSpaceType , class TDenseSpaceType , class TLinearSolverType , class TPreconditionerType = Preconditioner<TSparseSpaceType, TDenseSpaceType>, class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
void Kratos::PowerIterationEigenvalueSolver< TSparseSpaceType, TDenseSpaceType, TLinearSolverType, TPreconditionerType, TReordererType >::Solve ( SparseMatrixType K,
SparseMatrixType M,
DenseVectorType Eigenvalues,
DenseMatrixType Eigenvectors 
)
inlineoverridevirtual

The power iteration algorithm.

Parameters
KThe stiffness matrix
MThe mass matrix
EigenvaluesThe vector containing the eigen values
EigenvectorsThe matrix containing the eigen vectors

Reimplemented from Kratos::LinearSolver< TSparseSpaceType, TDenseSpaceType, Reorderer< TSparseSpaceType, TDenseSpaceType > >.


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