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

This is a multigrid solver based on the AMGCL library. More...

#include <amgcl_solver.h>

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

Public Member Functions

Life Cycle
 AMGCLSolver (Parameters ThisParameters=Parameters(R"({})"))
 This is the default constructor. More...
 
 AMGCLSolver (AMGCLSmoother Smoother, AMGCLIterativeSolverType Solver, double Tolerance, int MaxIterationsNumber, int Verbosity, int GMRESSize=50)
 Default constructor - uses ILU+GMRES. More...
 
 AMGCLSolver (AMGCLSmoother Smoother, AMGCLIterativeSolverType Solver, AMGCLCoarseningType Coarsening, double Tolerance, int MaxIterationsNumber, int Verbosity, int GMRESSize=50, bool ProvideCoordinates=false)
 
 ~AMGCLSolver () override
 
Operations
bool Solve (SparseMatrixType &rA, VectorType &rX, VectorType &rB) override
 Normal solve method. More...
 
virtual void SetIterationsNumber (const IndexType IterationsNumber)
 This method sets the current iteration number. More...
 
virtual void SetResidualNorm (const double ResidualNorm)
 This method sets the current residual norm. More...
 
IndexType GetIterationsNumber () override
 This method returns the current iteration number. More...
 
virtual double GetResidualNorm ()
 This method returns the current residual norm. More...
 
bool Solve (SparseMatrixType &rA, DenseMatrixType &rX, DenseMatrixType &rB) override
 Multi solve method for solving a set of linear systems with same coefficient matrix. More...
 
bool AdditionalPhysicalDataIsNeeded () override
 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. More...
 
void ProvideAdditionalData (SparseMatrixType &rA, VectorType &rX, VectorType &rB, DofsArrayType &rDofSet, ModelPart &rModelPart) override
 Some solvers may require a minimum degree of knowledge of the structure of the matrix. More...
 
Input and output
void PrintInfo (std::ostream &rOStream) const override
 
void PrintData (std::ostream &rOStream) const override
 
- 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 InitializeSolutionStep (SparseMatrixType &rA, VectorType &rX, VectorType &rB)
 
virtual void PerformSolutionStep (SparseMatrixType &rA, VectorType &rX, VectorType &rB)
 
virtual void FinalizeSolutionStep (SparseMatrixType &rA, VectorType &rX, VectorType &rB)
 
virtual void Clear ()
 
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...
 
virtual std::string Info () const
 Turn back information as a string. More...
 
 KRATOS_CLASS_POINTER_DEFINITION (LinearSolver)
 Pointer definition of LinearSolver. More...
 

Protected Member Functions

Protected Operations
void CheckIfSelectedOptionIsAvailable (const Parameters ThisParameters, const std::string &rOptionName, const std::set< std::string > &rAvailableOptions)
 
Private Operations
void SetSmootherType (const AMGCLSmoother SmootherType)
 This method sets the smother type to be considered. More...
 
void SetIterativeSolverType (const AMGCLIterativeSolverType SolverType)
 This method sets the iterative solver to be considered. More...
 
void SetCoarseningType (const AMGCLCoarseningType CoarseningType)
 This method sets the coarsening type to be considered. More...
 
Un accessible methods
AMGCLSolveroperator= (const AMGCLSolver &Other)
 
 AMGCLSolver (const AMGCLSolver &Other)
 

Protected Attributes

Member Variables
double mTolerance
 
IndexType mMaxIterationsNumber
 The tolerance considered. More...
 
int mVerbosity
 The maximum number of iterations considered. More...
 
int mBlockSize
 The versoisty level. More...
 
SizeType mGMRESSize
 The size of the dof block. More...
 
SizeType mCoarseEnough
 The size of the GMRES. More...
 
bool mFallbackToGMRES
 The level of coarsening allowed. More...
 
bool mProvideCoordinates
 Of consider GMRES as fallback (TODO: Local flag?) More...
 
bool mUseBlockMatricesIfPossible
 If the coordinates are provided (TODO: Local flag?) More...
 
bool mUseGPGPU
 If use the bloack matrices if possible (TODO: Local flag?) More...
 
std::vector< array_1d< double, 3 > > mCoordinates
 Use GPGPU if available. More...
 
boost::property_tree::ptree mAMGCLParameters
 The vector containing the local coordinates. More...
 
double mResidualNorm = 0.0
 The configuration parameters of the AMGCl. More...
 
IndexType mIterationsNumber = 0
 The current residual norm. More...
 
bool mUseAMGPreconditioning = true
 The current iteration number. More...
 

Type Definitions

typedef LinearSolver< TSparseSpaceType, TDenseSpaceType, TReordererType > BaseType
 The base class definition. More...
 
typedef TSparseSpaceType::MatrixType SparseMatrixType
 The sparse matric type. More...
 
typedef TSparseSpaceType::VectorType VectorType
 Vector type definition. More...
 
typedef TDenseSpaceType::MatrixType DenseMatrixType
 Dense matrix type. More...
 
typedef ModelPart::DofsArrayType DofsArrayType
 DofArray type. More...
 
typedef TSparseSpaceType::IndexType IndexType
 The index type definition to be consistent. More...
 
typedef std::size_t SizeType
 The size type definition. More...
 
 KRATOS_CLASS_POINTER_DEFINITION (AMGCLSolver)
 Pointer definition of AMGCLSolver. 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::AMGCLSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >

This is a multigrid solver based on the AMGCL library.

Created by Denis Deminov: https://github.com/ddemidov/amgcl AMGCL is a header-only C++ library for solving large sparse linear systems with algebraic multigrid (AMG) method. AMG is one of the most effective iterative methods for solution of equation systems arising, for example, from discretizing PDEs on unstructured grids. The method can be used as a black-box solver for various computational problems, since it does not require any information about the underlying geometry. AMG is often used not as a standalone solver but as a preconditioner within an iterative solver (e.g. Conjugate Gradients, BiCGStab, or GMRES). AMGCL builds the AMG hierarchy on a CPU and then transfers it to one of the provided backends. This allows for transparent acceleration of the solution phase with help of OpenCL, CUDA, or OpenMP technologies. Users may provide their own backends which enables tight integration between AMGCL and the user code.

Author
Denis Demidov
Riccardo Rossi

Member Typedef Documentation

◆ BaseType

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

The base class definition.

◆ DenseMatrixType

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

Dense matrix type.

◆ DofsArrayType

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
typedef ModelPart::DofsArrayType Kratos::AMGCLSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::DofsArrayType

DofArray type.

◆ IndexType

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

The index type definition to be consistent.

◆ SizeType

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
typedef std::size_t Kratos::AMGCLSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::SizeType

The size type definition.

◆ SparseMatrixType

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

The sparse matric type.

◆ VectorType

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

Vector type definition.

Constructor & Destructor Documentation

◆ AMGCLSolver() [1/4]

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
Kratos::AMGCLSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::AMGCLSolver ( Parameters  ThisParameters = Parameters(R"({})"))
inline

This is the default constructor.

Parameters
ThisParametersThe configuration parameters

◆ AMGCLSolver() [2/4]

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
Kratos::AMGCLSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::AMGCLSolver ( AMGCLSmoother  Smoother,
AMGCLIterativeSolverType  Solver,
double  Tolerance,
int  MaxIterationsNumber,
int  Verbosity,
int  GMRESSize = 50 
)
inline

Default constructor - uses ILU+GMRES.

Parameters
SmootherThe smoother type considered
SolverThe solver type considered
Tolerancetolerance that will be achieved by the iterative solver
MaxIterationsNumberthis number represents both the number of iterations AND the size of the krylov space
Verbosity,anumber from 0 (no output) to 2 (maximal output)
GMRESSizeThe size of the GMRES

◆ AMGCLSolver() [3/4]

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
Kratos::AMGCLSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::AMGCLSolver ( AMGCLSmoother  Smoother,
AMGCLIterativeSolverType  Solver,
AMGCLCoarseningType  Coarsening,
double  Tolerance,
int  MaxIterationsNumber,
int  Verbosity,
int  GMRESSize = 50,
bool  ProvideCoordinates = false 
)
inline

Default constructor - uses ILU+GMRES

Parameters
SmootherThe smoother type considered
SolverThe solver type considered
CoarseningThe coarsening type considered
Tolerancetolerance that will be achieved by the iterative solver
MaxIterationsNumberthis number represents both the number of iterations AND the size of the krylov space
Verbosity,anumber from 0 (no output) to 2 (maximal output)
GMRESSizeThe size of the GMRES

◆ ~AMGCLSolver()

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

Destructor

◆ AMGCLSolver() [4/4]

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

Copy constructor.

Member Function Documentation

◆ AdditionalPhysicalDataIsNeeded()

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
bool Kratos::AMGCLSolver< 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 > >.

◆ CheckIfSelectedOptionIsAvailable()

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
void Kratos::AMGCLSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::CheckIfSelectedOptionIsAvailable ( const Parameters  ThisParameters,
const std::string &  rOptionName,
const std::set< std::string > &  rAvailableOptions 
)
inlineprotected

◆ GetIterationsNumber()

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

This method returns the current iteration number.

Returns
mIterationsNumber The current iteration number

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

◆ GetResidualNorm()

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
virtual double Kratos::AMGCLSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::GetResidualNorm ( )
inlinevirtual

This method returns the current residual norm.

Returns
mResidualNorm The current residual norm

◆ KRATOS_CLASS_POINTER_DEFINITION()

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

Pointer definition of AMGCLSolver.

◆ operator=()

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

Assignment operator.

◆ PrintData()

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

◆ PrintInfo()

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

◆ ProvideAdditionalData()

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
void Kratos::AMGCLSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::ProvideAdditionalData ( SparseMatrixType rA,
VectorType rX,
VectorType rB,
DofsArrayType rDofSet,
ModelPart rModelPart 
)
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

Parameters
rASystem matrix
rXSolution vector. It's also the initial guess for iterative linear solvers.
rBRight hand side vector.

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

◆ SetCoarseningType()

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
void Kratos::AMGCLSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::SetCoarseningType ( const AMGCLCoarseningType  CoarseningType)
inlineprotected

This method sets the coarsening type to be considered.

Parameters
CoarseningTypeThe coarsening type to be considered

◆ SetIterationsNumber()

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
virtual void Kratos::AMGCLSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::SetIterationsNumber ( const IndexType  IterationsNumber)
inlinevirtual

This method sets the current iteration number.

Parameters
IterationsNumberThe current iteration number

◆ SetIterativeSolverType()

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
void Kratos::AMGCLSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::SetIterativeSolverType ( const AMGCLIterativeSolverType  SolverType)
inlineprotected

This method sets the iterative solver to be considered.

Parameters
SolverTypeThe iterative solver to be considered

◆ SetResidualNorm()

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
virtual void Kratos::AMGCLSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::SetResidualNorm ( const double  ResidualNorm)
inlinevirtual

This method sets the current residual norm.

Parameters
ResidualNormThe current residual norm

◆ SetSmootherType()

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
void Kratos::AMGCLSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::SetSmootherType ( const AMGCLSmoother  SmootherType)
inlineprotected

This method sets the smother type to be considered.

Parameters
SmootherTypeThe smother type to be considered

◆ Solve() [1/2]

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

Multi solve method for solving a set of linear systems with same coefficient matrix.

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

Parameters
rASystem matrix
rXSolution vector. it's also the initial guess for iterative linear solvers.
rBRight hand side vector.

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

◆ Solve() [2/2]

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
bool Kratos::AMGCLSolver< 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. rVectorx is also th initial guess for iterative methods.

Parameters
rASystem matrix
rXSolution vector. it's also the initial guess for iterative linear solvers.
rBRight hand side vector.

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

Member Data Documentation

◆ mAMGCLParameters

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
boost::property_tree::ptree Kratos::AMGCLSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::mAMGCLParameters
protected

The vector containing the local coordinates.

◆ mBlockSize

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
int Kratos::AMGCLSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::mBlockSize
protected

The versoisty level.

◆ mCoarseEnough

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
SizeType Kratos::AMGCLSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::mCoarseEnough
protected

The size of the GMRES.

◆ mCoordinates

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
std::vector<array_1d<double,3> > Kratos::AMGCLSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::mCoordinates
protected

Use GPGPU if available.

◆ mFallbackToGMRES

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
bool Kratos::AMGCLSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::mFallbackToGMRES
protected

The level of coarsening allowed.

◆ mGMRESSize

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
SizeType Kratos::AMGCLSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::mGMRESSize
protected

The size of the dof block.

◆ mIterationsNumber

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
IndexType Kratos::AMGCLSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::mIterationsNumber = 0
protected

The current residual norm.

◆ mMaxIterationsNumber

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
IndexType Kratos::AMGCLSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::mMaxIterationsNumber
protected

The tolerance considered.

◆ mProvideCoordinates

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
bool Kratos::AMGCLSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::mProvideCoordinates
protected

Of consider GMRES as fallback (TODO: Local flag?)

◆ mResidualNorm

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
double Kratos::AMGCLSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::mResidualNorm = 0.0
protected

The configuration parameters of the AMGCl.

◆ mTolerance

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
double Kratos::AMGCLSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::mTolerance
protected

◆ mUseAMGPreconditioning

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
bool Kratos::AMGCLSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::mUseAMGPreconditioning = true
protected

The current iteration number.

◆ mUseBlockMatricesIfPossible

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
bool Kratos::AMGCLSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::mUseBlockMatricesIfPossible
protected

If the coordinates are provided (TODO: Local flag?)

◆ mUseGPGPU

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
bool Kratos::AMGCLSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::mUseGPGPU
protected

If use the bloack matrices if possible (TODO: Local flag?)

◆ mVerbosity

template<class TSparseSpaceType , class TDenseSpaceType , class TReordererType = Reorderer<TSparseSpaceType, TDenseSpaceType>>
int Kratos::AMGCLSolver< TSparseSpaceType, TDenseSpaceType, TReordererType >::mVerbosity
protected

The maximum number of iterations considered.


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