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::ScalingSolver< TSparseSpaceType, TDenseSpaceType, TReordererType > Class Template Reference

This solvers rescales in order to improve the conditioning of the system. More...

#include <scaling_solver.h>

Inheritance diagram for Kratos::ScalingSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >:
Collaboration diagram for Kratos::ScalingSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >:

Public Member Functions

Life Cycle
 ScalingSolver ()
 Default constructor. More...
 
 ScalingSolver (typename BaseType::Pointer pLinearSolver, const bool SymmetricScaling=true)
 Constructor without parameters. More...
 
 ScalingSolver (Parameters ThisParameters)
 Constructor with parameters. More...
 
 ScalingSolver (const ScalingSolver &Other)
 Copy constructor. More...
 
 ~ScalingSolver () override
 Destructor. More...
 
Operators
ScalingSolveroperator= (const ScalingSolver &Other)
 Assignment operator. More...
 
Operations
bool AdditionalPhysicalDataIsNeeded () override
 
void ProvideAdditionalData (SparseMatrixType &rA, VectorType &rX, VectorType &rB, typename ModelPart::DofsArrayType &rdof_set, ModelPart &r_model_part) override
 
void InitializeSolutionStep (SparseMatrixType &rA, VectorType &rX, VectorType &rB) override
 
void FinalizeSolutionStep (SparseMatrixType &rA, VectorType &rX, VectorType &rB) override
 
void Clear () override
 
bool Solve (SparseMatrixType &rA, VectorType &rX, VectorType &rB) override
 
Access
IndexType GetIterationsNumber () override
 
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::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, DenseMatrixType &rX, DenseMatrixType &rB)
 
virtual void Solve (SparseMatrixType &K, SparseMatrixType &M, DenseVectorType &Eigenvalues, DenseMatrixType &Eigenvectors)
 
virtual TReordererType::Pointer GetReorderer ()
 
virtual void SetReorderer (typename TReordererType::Pointer pNewReorderer)
 
virtual void SetTolerance (double NewTolerance)
 This method allows to set the tolerance in the linear solver. More...
 
virtual double GetTolerance ()
 This method allows to get the tolerance in the linear solver. More...
 
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 LinearSolver< TSparseSpaceType, TDenseSpaceType, TReordererType > BaseType
 Definition of the base type. More...
 
typedef TSparseSpaceType::MatrixType SparseMatrixType
 The definition of the spaces (sparse matrix) More...
 
typedef TSparseSpaceType::VectorType VectorType
 The definition of the spaces (vector) More...
 
typedef TDenseSpaceType::MatrixType DenseMatrixType
 The definition of the spaces (dense matrix) More...
 
typedef LinearSolverFactory< TSparseSpaceType, TDenseSpaceType > LinearSolverFactoryType
 The definition of the linear solver factory type. More...
 
typedef TSparseSpaceType::IndexType IndexType
 The index type definition to be consistent. More...
 
 KRATOS_CLASS_POINTER_DEFINITION (ScalingSolver)
 Pointer definition of ScalingSolver. More...
 

Additional Inherited Members

- 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...
 

Detailed Description

template<class TSparseSpaceType, class TDenseSpaceType, class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
class Kratos::ScalingSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >

This solvers rescales in order to improve the conditioning of the system.

Rescales the matrix, and uses a given linear solver

Author
Riccardo Rossi
Template Parameters
TSparseSpaceTypeThe sparse space definition
TDenseSpaceTypeThe dense space definition
TReordererTypeThe reorder considered

Member Typedef Documentation

◆ BaseType

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
typedef LinearSolver<TSparseSpaceType, TDenseSpaceType, TReordererType> Kratos::ScalingSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::BaseType

Definition of the base type.

◆ DenseMatrixType

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
typedef TDenseSpaceType::MatrixType Kratos::ScalingSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::DenseMatrixType

The definition of the spaces (dense matrix)

◆ IndexType

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
typedef TSparseSpaceType::IndexType Kratos::ScalingSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::IndexType

The index type definition to be consistent.

◆ LinearSolverFactoryType

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
typedef LinearSolverFactory<TSparseSpaceType,TDenseSpaceType> Kratos::ScalingSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::LinearSolverFactoryType

The definition of the linear solver factory type.

◆ SparseMatrixType

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
typedef TSparseSpaceType::MatrixType Kratos::ScalingSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::SparseMatrixType

The definition of the spaces (sparse matrix)

◆ VectorType

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
typedef TSparseSpaceType::VectorType Kratos::ScalingSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::VectorType

The definition of the spaces (vector)

Constructor & Destructor Documentation

◆ ScalingSolver() [1/4]

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
Kratos::ScalingSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::ScalingSolver ( )
inline

Default constructor.

◆ ScalingSolver() [2/4]

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
Kratos::ScalingSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::ScalingSolver ( typename BaseType::Pointer  pLinearSolver,
const bool  SymmetricScaling = true 
)
inline

Constructor without parameters.

Parameters
pLinearSolverThe linear solver to be scaled
SymmetricScalingIf the scaling is symmetric (true by default)

◆ ScalingSolver() [3/4]

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
Kratos::ScalingSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::ScalingSolver ( Parameters  ThisParameters)
inline

Constructor with parameters.

Parameters
ThisParametersThe configuration parameters of the linear solver

◆ ScalingSolver() [4/4]

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
Kratos::ScalingSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::ScalingSolver ( const ScalingSolver< TSparseSpaceType, TDenseSpaceType, TReordererType > &  Other)
inline

Copy constructor.

◆ ~ScalingSolver()

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
Kratos::ScalingSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::~ScalingSolver ( )
inlineoverride

Destructor.

Member Function Documentation

◆ AdditionalPhysicalDataIsNeeded()

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
bool Kratos::ScalingSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::AdditionalPhysicalDataIsNeeded ( )
inlineoverridevirtual

Some solvers may require a minimum degree of knowledge of the structure of the matrix. To make an example when solving a mixed u-p problem, it is important to identify the row associated to v and p. another example is the automatic prescription of rotation null-space for smoothed-aggregation solvers which require knowledge on the spatial position of the nodes associated to a given dof. This function tells if the solver requires such data

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

◆ Clear()

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
void Kratos::ScalingSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::Clear ( )
inlineoverridevirtual

This function is designed to clean up all internal data in the solver. Clear is designed to leave the solver object as if newly created. After a clear a new Initialize is needed

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

◆ FinalizeSolutionStep()

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
void Kratos::ScalingSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::FinalizeSolutionStep ( SparseMatrixType rA,
VectorType rX,
VectorType rB 
)
inlineoverridevirtual

This function is designed to be called at the end of the solve step. for example this is the place to remove any data that we do not want to save for later

Parameters
rA.System matrix
rX.Solution vector. it's also the initial guess for iterative linear solvers.
rB.Right hand side vector.

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

◆ GetIterationsNumber()

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
IndexType Kratos::ScalingSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::GetIterationsNumber ( )
inlineoverridevirtual

◆ Info()

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
std::string Kratos::ScalingSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::Info ( ) const
inlineoverridevirtual

◆ InitializeSolutionStep()

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
void Kratos::ScalingSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::InitializeSolutionStep ( SparseMatrixType rA,
VectorType rX,
VectorType rB 
)
inlineoverridevirtual

This function is designed to be called every time the coefficients change in the system that is, normally at the beginning of each solve. For example if we are implementing a direct solver, this is the place to do the factorization so that then the backward substitution can be performed effectively more than once

Parameters
rA.System matrix
rX.Solution vector. it's also the initial guess for iterative linear solvers.
rB.Right hand side vector.

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

◆ KRATOS_CLASS_POINTER_DEFINITION()

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
Kratos::ScalingSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::KRATOS_CLASS_POINTER_DEFINITION ( ScalingSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >  )

Pointer definition of ScalingSolver.

◆ operator=()

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
ScalingSolver& Kratos::ScalingSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::operator= ( const ScalingSolver< TSparseSpaceType, TDenseSpaceType, TReordererType > &  Other)
inline

Assignment operator.

◆ PrintData()

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

◆ PrintInfo()

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

◆ ProvideAdditionalData()

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
void Kratos::ScalingSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::ProvideAdditionalData ( SparseMatrixType rA,
VectorType rX,
VectorType rB,
typename ModelPart::DofsArrayType rdof_set,
ModelPart r_model_part 
)
inlineoverridevirtual

Some solvers may require a minimum degree of knowledge of the structure of the matrix. To make an example when solving a mixed u-p problem, it is important to identify the row associated to v and p. another example is the automatic prescription of rotation null-space for smoothed-aggregation solvers which require knowledge on the spatial position of the nodes associated to a given dof. This function is the place to eventually provide such data

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

◆ Solve()

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
bool Kratos::ScalingSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::Solve ( SparseMatrixType rA,
VectorType rX,
VectorType rB 
)
inlineoverridevirtual

Normal solve method. Solves the linear system Ax=b and puts the result on SystemVector& rX. rX is also th initial guess for iterative methods.

Parameters
rA.System matrix
rX.Solution vector. it's also the initial guess for iterative linear solvers.
rB.Right hand side vector.

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


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