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::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver > Class Template Reference

This is the base linear strategy jacobi / gauss-seidel linear strategies. More...

#include <linear_strategy.hpp>

Inheritance diagram for Kratos::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >:
Collaboration diagram for Kratos::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >:

Public Member Functions

Life Cycle
 LinearStrategy (ModelPart &rModelPart, typename SchemeType::Pointer pScheme, typename BuilderAndSolverType::Pointer pBuilderAndSolver, Flags &rOptions)
 
 LinearStrategy (ModelPart &rModelPart, typename SchemeType::Pointer pScheme, typename LinearSolverType::Pointer pLinearSolver, Flags &rOptions)
 
 ~LinearStrategy () override
 Destructor. More...
 
Operations
void InitializeSolutionStep () override
 Performs all the required operations that should be done (for each step) before solving the solution step. More...
 
void FinalizeSolutionStep () override
 Performs all the required operations that should be done (for each step) after solving the solution step. More...
 
bool SolveSolutionStep () override
 Solves the current step. This function returns true if a solution has been found, false otherwise. More...
 
bool SolveIteration () override
 Solves the current iteration. This function returns true if a solution has been found, false otherwise. More...
 
void Clear () override
 Clears the internal storage. More...
 
int Check () override
 Function to perform expensive checks. More...
 
Access
void SetEchoLevel (const int Level) override
 This sets the level of echo for the solving strategy. More...
 
void SetScheme (typename SchemeType::Pointer pScheme)
 Set method for the time scheme. More...
 
SchemeType::Pointer GetScheme ()
 Get method for the time scheme. More...
 
void SetBuilderAndSolver (typename BuilderAndSolverType::Pointer pBuilderAndSolver)
 Set method for the builder and solver. More...
 
BuilderAndSolverType::Pointer GetBuilderAndSolver ()
 Get method for the builder and solver. More...
 
SystemMatrixTypeGetSystemMatrix ()
 This method returns the LHS matrix. More...
 
void GetDirectSystemMatrix (SystemMatrixType &A)
 This method directly sets the input as the LHS. More...
 
- Public Member Functions inherited from Kratos::SolutionStrategy< TSparseSpace, TDenseSpace, TLinearSolver >
 SolutionStrategy (ModelPart &rModelPart)
 Constructor. More...
 
 SolutionStrategy (ModelPart &rModelPart, Flags &rOptions)
 Constructor. More...
 
 ~SolutionStrategy () override
 Destructor. More...
 
virtual bool Solve ()
 The problem of interest is solved. More...
 
virtual int GetEchoLevel ()
 This returns the level of echo for the solution strategy. More...
 
void SetOptions (Flags &rOptions)
 Sets strategy options. More...
 
FlagsGetOptions ()
 Get strategy options. More...
 
virtual unsigned int GetMaxIterationNumber ()
 This method gets the flag mMaxIterationNumber. More...
 
ModelPartGetModelPart ()
 Operations to get the pointer to the model. More...
 
 KRATOS_CLASS_POINTER_DEFINITION (SolutionStrategy)
 Pointer definition of SolutionStrategy. More...
 
- Public Member Functions inherited from Kratos::Flags
Flagsoperator= (Flags const &rOther)
 Assignment operator. More...
 
 operator bool () const
 
Flags operator~ () const
 
bool operator! () const
 
void AssignFlags (Flags const &rOther)
 
void Set (const Flags ThisFlag)
 
void Set (const Flags ThisFlag, bool Value)
 
void Reset (const Flags ThisFlag)
 
void Flip (const Flags ThisFlag)
 
void SetPosition (IndexType Position, bool Value=true)
 
bool GetPosition (IndexType Position) const
 
void FlipPosition (IndexType Position)
 
void ClearPosition (IndexType Position)
 
void Clear ()
 
Flags AsFalse () const
 
bool Is (Flags const &rOther) const
 
bool IsDefined (Flags const &rOther) const
 
bool IsNot (Flags const &rOther) const
 
bool IsNotDefined (Flags const &rOther) const
 
virtual std::string Info () const
 Turn back information as a string. More...
 
virtual void PrintInfo (std::ostream &rOStream) const
 Print information about this object. More...
 
virtual void PrintData (std::ostream &rOStream) const
 Print object's data. More...
 
 KRATOS_CLASS_POINTER_DEFINITION (Flags)
 Pointer definition of Flags. More...
 
const Flagsoperator|= (const Flags &Other)
 
const Flagsoperator&= (const Flags &Other)
 
 Flags ()
 Default constructor. More...
 
 Flags (Flags const &rOther)
 Copy constructor. More...
 
virtual ~Flags ()
 Destructor. More...
 

Protected Member Functions

Protected Operations
void Initialize () override
 Initialization of member variables and prior operations. More...
 
void Predict () override
 Operation to predict the solution ... if it is not called a trivial predictor is used in which the values of the solution step of interest are assumed equal to the old values. More...
 
void Update () override
 Here the database is updated. More...
 
void SetSystemDofs ()
 Performs all the required operations to reform dofs. More...
 
- Protected Member Functions inherited from Kratos::SolutionStrategy< TSparseSpace, TDenseSpace, TLinearSolver >
virtual void Finalize ()
 Finalization of member variables and prior operations. More...
 

Protected Attributes

Protected member Variables
SchemeType::Pointer mpScheme
 
BuilderAndSolverType::Pointer mpBuilderAndSolver
 The pointer to the time scheme employed. More...
 
SystemVectorPointerType mpDx
 The pointer to the builder and solver employed. More...
 
SystemVectorPointerType mpb
 The incremement in the solution. More...
 
SystemMatrixPointerType mpA
 The RHS vector of the system of equations. More...
 
- Protected Attributes inherited from Kratos::SolutionStrategy< TSparseSpace, TDenseSpace, TLinearSolver >
Flags mOptions
 
int mEchoLevel
 

Type Definitions

typedef SolutionStrategy< TSparseSpace, TDenseSpace, TLinearSolver > BaseType
 
typedef BaseType::LocalFlagType LocalFlagType
 
typedef BaseType::BuilderAndSolverType BuilderAndSolverType
 
typedef BaseType::SchemeType SchemeType
 
typedef TLinearSolver LinearSolverType
 
typedef TSparseSpace SparseSpaceType
 
typedef BaseType::DofsArrayType DofsArrayType
 
typedef BaseType::SystemMatrixType SystemMatrixType
 
typedef BaseType::SystemVectorType SystemVectorType
 
typedef BaseType::SystemMatrixPointerType SystemMatrixPointerType
 
typedef BaseType::SystemVectorPointerType SystemVectorPointerType
 
 KRATOS_CLASS_POINTER_DEFINITION (LinearStrategy)
 

Additional Inherited Members

- Public Types inherited from Kratos::SolutionStrategy< TSparseSpace, TDenseSpace, TLinearSolver >
typedef SolverLocalFlags LocalFlagType
 
typedef ModelPart::DofsArrayType DofsArrayType
 
typedef TSparseSpace::MatrixType SystemMatrixType
 
typedef TSparseSpace::VectorType SystemVectorType
 
typedef TSparseSpace::MatrixPointerType SystemMatrixPointerType
 
typedef TSparseSpace::VectorPointerType SystemVectorPointerType
 
typedef SolutionScheme< TSparseSpace, TDenseSpace > SchemeType
 
typedef SolutionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver > BuilderAndSolverType
 
- Public Types inherited from Kratos::Flags
enum  FlagsList {
  Flag0 = BlockType(1) , Flag1 = BlockType(1) << 1 , Flag2 = BlockType(1) << 2 , Flag3 = BlockType(1) << 3 ,
  Flag4 = BlockType(1) << 4 , Flag5 = BlockType(1) << 5 , Flag6 = BlockType(1) << 6 , Flag7 = BlockType(1) << 7 ,
  Flag8 = BlockType(1) << 8 , Flag9 = BlockType(1) << 9 , Flag10 = BlockType(1) << 10 , Flag11 = BlockType(1) << 11 ,
  Flag12 = BlockType(1) << 12 , Flag13 = BlockType(1) << 13 , Flag14 = BlockType(1) << 14 , Flag15 = BlockType(1) << 15 ,
  Flag16 = BlockType(1) << 16 , Flag17 = BlockType(1) << 17 , Flag18 = BlockType(1) << 18 , Flag19 = BlockType(1) << 19 ,
  Flag20 = BlockType(1) << 20 , Flag21 = BlockType(1) << 21 , Flag22 = BlockType(1) << 22 , Flag23 = BlockType(1) << 23 ,
  Flag24 = BlockType(1) << 24 , Flag25 = BlockType(1) << 25 , Flag26 = BlockType(1) << 26 , Flag27 = BlockType(1) << 27 ,
  Flag28 = BlockType(1) << 28 , Flag29 = BlockType(1) << 29 , Flag30 = BlockType(1) << 30
}
 
typedef int64_t BlockType
 
typedef int64_t FlagType
 
typedef std::size_t IndexType
 
- Static Public Member Functions inherited from Kratos::Flags
static const Flags AllDefined ()
 
static const Flags AllTrue ()
 
static Flags Create (IndexType ThisPosition, bool Value=true)
 

Detailed Description

template<class TSparseSpace, class TDenseSpace, class TLinearSolver>
class Kratos::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >

This is the base linear strategy jacobi / gauss-seidel linear strategies.

Member Typedef Documentation

◆ BaseType

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
typedef SolutionStrategy<TSparseSpace, TDenseSpace, TLinearSolver> Kratos::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::BaseType

◆ BuilderAndSolverType

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
typedef BaseType::BuilderAndSolverType Kratos::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::BuilderAndSolverType

◆ DofsArrayType

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
typedef BaseType::DofsArrayType Kratos::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::DofsArrayType

◆ LinearSolverType

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
typedef TLinearSolver Kratos::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::LinearSolverType

◆ LocalFlagType

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
typedef BaseType::LocalFlagType Kratos::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::LocalFlagType

◆ SchemeType

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
typedef BaseType::SchemeType Kratos::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::SchemeType

◆ SparseSpaceType

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
typedef TSparseSpace Kratos::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::SparseSpaceType

◆ SystemMatrixPointerType

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
typedef BaseType::SystemMatrixPointerType Kratos::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::SystemMatrixPointerType

◆ SystemMatrixType

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
typedef BaseType::SystemMatrixType Kratos::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::SystemMatrixType

◆ SystemVectorPointerType

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
typedef BaseType::SystemVectorPointerType Kratos::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::SystemVectorPointerType

◆ SystemVectorType

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
typedef BaseType::SystemVectorType Kratos::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::SystemVectorType

Constructor & Destructor Documentation

◆ LinearStrategy() [1/2]

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
Kratos::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::LinearStrategy ( ModelPart rModelPart,
typename SchemeType::Pointer  pScheme,
typename BuilderAndSolverType::Pointer  pBuilderAndSolver,
Flags rOptions 
)
inline

Default constructor

Parameters
rModelPartThe model part of the problem
pSchemeThe integration scheme
pBuilderAndSolverThe builder and solver employed
rOptionsThe solution options

◆ LinearStrategy() [2/2]

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
Kratos::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::LinearStrategy ( ModelPart rModelPart,
typename SchemeType::Pointer  pScheme,
typename LinearSolverType::Pointer  pLinearSolver,
Flags rOptions 
)
inline

Default constructor

Parameters
rModelPartThe model part of the problem
pSchemeThe integration scheme
pLinearSolverThe linear solver employed
rOptionsThe solution options

◆ ~LinearStrategy()

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
Kratos::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::~LinearStrategy ( )
inlineoverride

Destructor.

In trilinos third party library, the linear solver's preconditioner should be freed before the system matrix. We control the deallocation order with Clear().

Member Function Documentation

◆ Check()

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
int Kratos::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::Check ( )
inlineoverridevirtual

Function to perform expensive checks.

It is designed to be called ONCE to verify that the input is correct.

Reimplemented from Kratos::SolutionStrategy< TSparseSpace, TDenseSpace, TLinearSolver >.

Reimplemented in Kratos::NewtonRaphsonStrategy< TSparseSpace, TDenseSpace, TLinearSolver >.

◆ Clear()

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
void Kratos::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::Clear ( )
inlineoverridevirtual

◆ FinalizeSolutionStep()

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
void Kratos::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::FinalizeSolutionStep ( )
inlineoverridevirtual

Performs all the required operations that should be done (for each step) after solving the solution step.

Reimplemented from Kratos::SolutionStrategy< TSparseSpace, TDenseSpace, TLinearSolver >.

Reimplemented in Kratos::NewtonRaphsonStrategy< TSparseSpace, TDenseSpace, TLinearSolver >.

◆ GetBuilderAndSolver()

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
BuilderAndSolverType::Pointer Kratos::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::GetBuilderAndSolver ( )
inline

Get method for the builder and solver.

Returns
mpBuilderAndSolver: The pointer to the builder and solver considered

◆ GetDirectSystemMatrix()

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
void Kratos::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::GetDirectSystemMatrix ( SystemMatrixType A)
inline

This method directly sets the input as the LHS.

Parameters
AThe LHS matrix

◆ GetScheme()

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
SchemeType::Pointer Kratos::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::GetScheme ( )
inline

Get method for the time scheme.

Returns
mpScheme: The pointer to the time scheme considered

◆ GetSystemMatrix()

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
SystemMatrixType& Kratos::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::GetSystemMatrix ( )
inline

This method returns the LHS matrix.

Returns
The LHS matrix

◆ Initialize()

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
void Kratos::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::Initialize ( void  )
inlineoverrideprotectedvirtual

Initialization of member variables and prior operations.

Reimplemented from Kratos::SolutionStrategy< TSparseSpace, TDenseSpace, TLinearSolver >.

Reimplemented in Kratos::NewtonRaphsonStrategy< TSparseSpace, TDenseSpace, TLinearSolver >.

◆ InitializeSolutionStep()

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
void Kratos::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::InitializeSolutionStep ( )
inlineoverridevirtual

Performs all the required operations that should be done (for each step) before solving the solution step.

Reimplemented from Kratos::SolutionStrategy< TSparseSpace, TDenseSpace, TLinearSolver >.

Reimplemented in Kratos::NewtonRaphsonStrategy< TSparseSpace, TDenseSpace, TLinearSolver >.

◆ KRATOS_CLASS_POINTER_DEFINITION()

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
Kratos::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::KRATOS_CLASS_POINTER_DEFINITION ( LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >  )

◆ Predict()

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
void Kratos::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::Predict ( )
inlineoverrideprotectedvirtual

Operation to predict the solution ... if it is not called a trivial predictor is used in which the values of the solution step of interest are assumed equal to the old values.

Reimplemented from Kratos::SolutionStrategy< TSparseSpace, TDenseSpace, TLinearSolver >.

◆ SetBuilderAndSolver()

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
void Kratos::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::SetBuilderAndSolver ( typename BuilderAndSolverType::Pointer  pBuilderAndSolver)
inline

Set method for the builder and solver.

Parameters
pNewBuilderAndSolverThe pointer to the builder and solver considered

◆ SetEchoLevel()

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
void Kratos::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::SetEchoLevel ( const int  Level)
inlineoverridevirtual

This sets the level of echo for the solving strategy.

Parameters
Levelof echo for the solving strategy

{ 0 -> Mute... no echo at all 1 -> Printing time and basic informations 2 -> Printing linear solver data 3 -> Print of debug informations: Echo of stiffness matrix, Dx, b... }

Reimplemented from Kratos::SolutionStrategy< TSparseSpace, TDenseSpace, TLinearSolver >.

Reimplemented in Kratos::NewtonRaphsonStrategy< TSparseSpace, TDenseSpace, TLinearSolver >.

◆ SetScheme()

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
void Kratos::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::SetScheme ( typename SchemeType::Pointer  pScheme)
inline

Set method for the time scheme.

Parameters
pSchemeThe pointer to the time scheme considered

◆ SetSystemDofs()

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
void Kratos::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::SetSystemDofs ( )
inlineprotected

Performs all the required operations to reform dofs.

◆ SolveIteration()

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
bool Kratos::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::SolveIteration ( )
inlineoverridevirtual

Solves the current iteration. This function returns true if a solution has been found, false otherwise.

Reimplemented from Kratos::SolutionStrategy< TSparseSpace, TDenseSpace, TLinearSolver >.

Reimplemented in Kratos::NewtonRaphsonStrategy< TSparseSpace, TDenseSpace, TLinearSolver >.

◆ SolveSolutionStep()

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
bool Kratos::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::SolveSolutionStep ( )
inlineoverridevirtual

Solves the current step. This function returns true if a solution has been found, false otherwise.

Reimplemented from Kratos::SolutionStrategy< TSparseSpace, TDenseSpace, TLinearSolver >.

Reimplemented in Kratos::NewtonRaphsonStrategy< TSparseSpace, TDenseSpace, TLinearSolver >.

◆ Update()

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
void Kratos::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::Update ( )
inlineoverrideprotectedvirtual

Here the database is updated.

Parameters
AThe LHS matrix of the system of equations
DxThe incremement in the solution
bThe RHS vector of the system of equations
MoveMeshThe flag that allows to move the mesh

Reimplemented from Kratos::SolutionStrategy< TSparseSpace, TDenseSpace, TLinearSolver >.

Member Data Documentation

◆ mpA

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
SystemMatrixPointerType Kratos::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::mpA
protected

The RHS vector of the system of equations.

◆ mpb

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
SystemVectorPointerType Kratos::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::mpb
protected

The incremement in the solution.

◆ mpBuilderAndSolver

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
BuilderAndSolverType::Pointer Kratos::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::mpBuilderAndSolver
protected

The pointer to the time scheme employed.

◆ mpDx

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
SystemVectorPointerType Kratos::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::mpDx
protected

The pointer to the builder and solver employed.

◆ mpScheme

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
SchemeType::Pointer Kratos::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::mpScheme
protected

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