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

This is the base Newton Raphson strategy. More...

#include <newton_raphson_strategy.hpp>

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

Public Member Functions

Life Cycle
 NewtonRaphsonStrategy (ModelPart &rModelPart, typename SchemeType::Pointer pScheme, typename BuilderAndSolverType::Pointer pBuilderAndSolver, typename ConvergenceCriterionType::Pointer pConvergenceCriterion, Flags &rOptions, unsigned int MaxIterations=30)
 
 NewtonRaphsonStrategy (ModelPart &rModelPart, typename SchemeType::Pointer pScheme, typename LinearSolverType::Pointer pLinearSolver, typename ConvergenceCriterionType::Pointer pConvergenceCriterion, Flags &rOptions, unsigned int MaxIterations=30)
 
 ~NewtonRaphsonStrategy () 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 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 SetMaxIterationNumber (unsigned int MaxIterationNumber)
 This method sets the flag mMaxIterationNumber. More...
 
unsigned int GetMaxIterationNumber () override
 This method gets the flag mMaxIterationNumber. More...
 
- Public Member Functions inherited from Kratos::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >
 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...
 
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...
 
 KRATOS_CLASS_POINTER_DEFINITION (LinearStrategy)
 
- 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...
 
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...
 
- Protected Member Functions inherited from Kratos::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >
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
ConvergenceCriterionType::Pointer mpConvergenceCriteria
 
unsigned int mMaxIterationNumber
 The pointer to the convergence criteria employed. More...
 
- Protected Attributes inherited from Kratos::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >
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 LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver > BaseType
 
typedef BaseType::LocalFlagType LocalFlagType
 
typedef ConvergenceCriterion< TSparseSpace, TDenseSpace > ConvergenceCriterionType
 
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 (NewtonRaphsonStrategy)
 

Additional Inherited Members

- Public Types inherited from Kratos::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >
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
 
- 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::NewtonRaphsonStrategy< TSparseSpace, TDenseSpace, TLinearSolver >

This is the base Newton Raphson strategy.

This strategy iterates until the convergence is achieved (or the maximum number of iterations is surpassed) using a Newton Raphson algorithm

Member Typedef Documentation

◆ BaseType

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

◆ BuilderAndSolverType

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

◆ ConvergenceCriterionType

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
typedef ConvergenceCriterion<TSparseSpace, TDenseSpace> Kratos::NewtonRaphsonStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::ConvergenceCriterionType

◆ DofsArrayType

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

◆ LinearSolverType

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

◆ LocalFlagType

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

◆ SchemeType

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

◆ SparseSpaceType

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

◆ SystemMatrixPointerType

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

◆ SystemMatrixType

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

◆ SystemVectorPointerType

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

◆ SystemVectorType

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

Constructor & Destructor Documentation

◆ NewtonRaphsonStrategy() [1/2]

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
Kratos::NewtonRaphsonStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::NewtonRaphsonStrategy ( ModelPart rModelPart,
typename SchemeType::Pointer  pScheme,
typename BuilderAndSolverType::Pointer  pBuilderAndSolver,
typename ConvergenceCriterionType::Pointer  pConvergenceCriterion,
Flags rOptions,
unsigned int  MaxIterations = 30 
)
inline

Default constructor

Parameters
rModelPartThe model part of the problem
pSchemeThe integration scheme
pBuilderAndSolverThe builder and solver employed
pConvergenceCriteriaThe convergence criteria employed
rOptionsThe solution options
MaxIterationsThe maximum number of non-linear iterations to be considered when solving the problem

◆ NewtonRaphsonStrategy() [2/2]

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
Kratos::NewtonRaphsonStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::NewtonRaphsonStrategy ( ModelPart rModelPart,
typename SchemeType::Pointer  pScheme,
typename LinearSolverType::Pointer  pLinearSolver,
typename ConvergenceCriterionType::Pointer  pConvergenceCriterion,
Flags rOptions,
unsigned int  MaxIterations = 30 
)
inline

Default constructor

Parameters
rModelPartThe model part of the problem
pSchemeThe integration scheme
pLinearSolverThe linear solver employed
pConvergenceCriteriaThe convergence criteria employed
rOptionsThe solution options
MaxIterationsThe maximum number of non-linear iterations to be considered when solving the problem

◆ ~NewtonRaphsonStrategy()

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
Kratos::NewtonRaphsonStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::~NewtonRaphsonStrategy ( )
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::NewtonRaphsonStrategy< 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::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >.

◆ Clear()

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

Clears the internal storage.

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

◆ FinalizeSolutionStep()

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
void Kratos::NewtonRaphsonStrategy< 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::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >.

◆ GetMaxIterationNumber()

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
unsigned int Kratos::NewtonRaphsonStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::GetMaxIterationNumber ( )
inlineoverridevirtual

This method gets the flag mMaxIterationNumber.

Returns
mMaxIterationNumber: This is the maximum number of on linear iterations

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

◆ Initialize()

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

Initialization of member variables and prior operations.

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

◆ InitializeSolutionStep()

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
void Kratos::NewtonRaphsonStrategy< 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::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >.

◆ KRATOS_CLASS_POINTER_DEFINITION()

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

◆ SetEchoLevel()

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
void Kratos::NewtonRaphsonStrategy< 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::LinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >.

◆ SetMaxIterationNumber()

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
void Kratos::NewtonRaphsonStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::SetMaxIterationNumber ( unsigned int  MaxIterationNumber)
inline

This method sets the flag mMaxIterationNumber.

Parameters
MaxIterationNumberThis is the maximum number of on linear iterations

◆ SolveIteration()

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

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

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

◆ SolveSolutionStep()

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

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

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

Member Data Documentation

◆ mMaxIterationNumber

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
unsigned int Kratos::NewtonRaphsonStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::mMaxIterationNumber
protected

The pointer to the convergence criteria employed.

◆ mpConvergenceCriteria

template<class TSparseSpace , class TDenseSpace , class TLinearSolver >
ConvergenceCriterionType::Pointer Kratos::NewtonRaphsonStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::mpConvergenceCriteria
protected

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