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.
|
Solution Buider and Solver base class. More...
#include <solution_builder_and_solver.hpp>
Public Member Functions | |
Life Cycle | |
SolutionBuilderAndSolver () | |
Default Constructor. More... | |
SolutionBuilderAndSolver (LinearSolverPointerType pLinearSystemSolver) | |
Constructor. More... | |
~SolutionBuilderAndSolver () override | |
Destructor. More... | |
Operations | |
virtual void | BuildLHS (SchemePointerType pScheme, ModelPart &rModelPart, SystemMatrixType &rA) |
Function to perform the building of the LHS,. More... | |
virtual void | BuildRHS (SchemePointerType pScheme, ModelPart &rModelPart, SystemVectorType &rb) |
Function to perform the build of the RHS. More... | |
virtual void | Build (SchemePointerType pScheme, ModelPart &rModelPart, SystemMatrixType &rA, SystemVectorType &rb) |
Function to perform the building of the LHS and RHS. More... | |
virtual void | SystemSolve (SystemMatrixType &rA, SystemVectorType &rDx, SystemVectorType &rb) |
This is a call to the linear system solver. More... | |
virtual void | BuildAndSolve (SchemePointerType pScheme, ModelPart &rModelPart, SystemMatrixType &rA, SystemVectorType &rDx, SystemVectorType &rb) |
Function to perform the building and solving phase at the same time. More... | |
virtual void | BuildRHSAndSolve (SchemePointerType pScheme, ModelPart &rModelPart, SystemMatrixType &rA, SystemVectorType &rDx, SystemVectorType &rb) |
Function to perform the building of the RHS and solving phase at the same time. More... | |
virtual void | ApplyDirichletConditions (SchemePointerType pScheme, ModelPart &rModelPart, SystemMatrixType &rA, SystemVectorType &rDx, SystemVectorType &rb) |
applies the dirichlet conditions. More... | |
virtual void | SetUpDofSet (SchemePointerType pScheme, ModelPart &rModelPart) |
Builds the list of the DofSets involved in the problem by "asking" to each element and condition its Dofs. More... | |
virtual void | SetUpSystem () |
organises the dofset in order to speed up the building phase More... | |
virtual void | SetUpSystemMatrices (SchemePointerType pScheme, ModelPart &rModelPart, SystemMatrixPointerType &pA, SystemVectorPointerType &pDx, SystemVectorPointerType &pb) |
Resizes and Initializes the system vectors and matrices after SetUpDofSet and SetUpSytem has been called. More... | |
virtual void | InitializeSolutionStep (SchemePointerType pScheme, ModelPart &rModelPart, SystemMatrixPointerType &pA, SystemVectorPointerType &pDx, SystemVectorPointerType &pb) |
Performs all the required operations that should be done (for each step) before solving the solution step. More... | |
virtual void | FinalizeSolutionStep (SchemePointerType pScheme, ModelPart &rModelPart, SystemMatrixPointerType &pA, SystemVectorPointerType &pDx, SystemVectorPointerType &pb) |
Performs all the required operations that should be done (for each step) after solving the solution step. More... | |
virtual void | CalculateReactions (SchemePointerType pScheme, ModelPart &rModelPart, SystemMatrixType &rA, SystemVectorType &rDx, SystemVectorType &rb) |
Calculates system reactions. More... | |
virtual void | Clear () |
This function is intended to be called at the end of the solution step to clean up memory storage not needed. More... | |
virtual int | Check (ModelPart &rModelPart) |
Access | |
unsigned int | GetEquationSystemSize () |
Get size of the system. More... | |
LinearSolverPointerType | GetLinearSystemSolver () |
Get linear solver. More... | |
void | SetOptions (Flags &rOptions) |
Sets strategy options. More... | |
Flags & | GetOptions () |
Get strategy options. More... | |
virtual void | SetEchoLevel (const int Level) |
This sets the level of echo for the builder and solver. More... | |
virtual int | GetEchoLevel () |
virtual void | EchoInfo (ModelPart &rModelPart, SystemMatrixType &rA, SystemVectorType &rDx, SystemVectorType &rb) |
This method returns the components of the system of equations depending of the echo level. More... | |
virtual DofsArrayType & | GetDofSet () |
Allows to get the list of system Dofs. More... | |
Public Member Functions inherited from Kratos::Flags | |
Flags & | operator= (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 Flags & | operator|= (const Flags &Other) |
const Flags & | operator&= (const Flags &Other) |
Flags () | |
Default constructor. More... | |
Flags (Flags const &rOther) | |
Copy constructor. More... | |
virtual | ~Flags () |
Destructor. More... | |
Protected Attributes | |
Protected member Variables | |
LinearSolverPointerType | mpLinearSystemSolver |
DofsArrayType | mDofSet |
Flags | mOptions |
unsigned int | mEquationSystemSize |
int | mEchoLevel |
SystemVectorPointerType | mpReactionsVector |
Type Definitions | |
typedef SolverLocalFlags | LocalFlagType |
typedef ModelPart::DofsArrayType | DofsArrayType |
typedef TSparseSpace::MatrixType | SystemMatrixType |
typedef TSparseSpace::VectorType | SystemVectorType |
typedef TSparseSpace::MatrixPointerType | SystemMatrixPointerType |
typedef TSparseSpace::VectorPointerType | SystemVectorPointerType |
typedef TDenseSpace::MatrixType | LocalSystemMatrixType |
typedef TDenseSpace::VectorType | LocalSystemVectorType |
typedef SolutionScheme< TSparseSpace, TDenseSpace > | SchemeType |
typedef SchemeType::Pointer | SchemePointerType |
typedef TLinearSolver::Pointer | LinearSolverPointerType |
KRATOS_CLASS_POINTER_DEFINITION (SolutionBuilderAndSolver) | |
Pointer definition of SolutionBuilderAndSolver. More... | |
Additional Inherited Members | |
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) |
Solution Buider and Solver base class.
Short class definition. Current class provides an implementation for standard builder and solving operations.
the RHS is constituted by the unbalanced loads (residual)
Degrees of freedom are reordered putting the restrained degrees of freedom at the end of the system ordered in reverse order with respect to the DofSet.
Imposition of the dirichlet conditions is naturally dealt with as the residual already contains this information.
This is the base class for the building and solving the solution system
typedef ModelPart::DofsArrayType Kratos::SolutionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >::DofsArrayType |
typedef TLinearSolver::Pointer Kratos::SolutionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >::LinearSolverPointerType |
typedef SolverLocalFlags Kratos::SolutionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >::LocalFlagType |
typedef TDenseSpace::MatrixType Kratos::SolutionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >::LocalSystemMatrixType |
typedef TDenseSpace::VectorType Kratos::SolutionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >::LocalSystemVectorType |
typedef SchemeType::Pointer Kratos::SolutionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >::SchemePointerType |
typedef SolutionScheme<TSparseSpace, TDenseSpace> Kratos::SolutionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >::SchemeType |
typedef TSparseSpace::MatrixPointerType Kratos::SolutionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >::SystemMatrixPointerType |
typedef TSparseSpace::MatrixType Kratos::SolutionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >::SystemMatrixType |
typedef TSparseSpace::VectorPointerType Kratos::SolutionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >::SystemVectorPointerType |
typedef TSparseSpace::VectorType Kratos::SolutionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >::SystemVectorType |
|
inline |
Default Constructor.
|
inline |
Constructor.
|
inlineoverride |
Destructor.
|
inlinevirtual |
applies the dirichlet conditions.
This operation may be very heavy or completely
unexpensive depending on the implementation choosen and on how the System Matrix
is built. For explanation of how it works for a particular implementation the user
should refer to the particular Builder And Solver choosen
Reimplemented in Kratos::ReductionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >, and Kratos::BlockBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >.
|
inlinevirtual |
Function to perform the building of the LHS and RHS.
Equivalent (but generally faster) then performing BuildLHS and BuildRHS
Reimplemented in Kratos::ReductionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >, and Kratos::BlockBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >.
|
inlinevirtual |
Function to perform the building and solving phase at the same time.
It is ideally the fastest and safer function to use when it is possible to solve just after building
Reimplemented in Kratos::ReductionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >, and Kratos::BlockBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >.
|
inlinevirtual |
Function to perform the building of the LHS,.
Depending on the implementation choosen the size of the matrix could be
equal to the total number of Dofs or to the number of non constrained dofs
Reimplemented in Kratos::ReductionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >, Kratos::ExplicitBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >, and Kratos::BlockBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >.
|
inlinevirtual |
Function to perform the build of the RHS.
The vector could be sized as the total number of dofs or as the number of non constrained ones
Reimplemented in Kratos::ReductionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >, Kratos::ExplicitBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >, and Kratos::BlockBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >.
|
inlinevirtual |
Function to perform the building of the RHS and solving phase at the same time.
It corresponds to the previews, but the System's matrix is considered already built and only the RHS is built again
Reimplemented in Kratos::ReductionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >, and Kratos::BlockBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >.
|
inlinevirtual |
Calculates system reactions.
A flag controls if reactions must be calculated
An internal variable to store the reactions vector is needed
Reimplemented in Kratos::ReductionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >, and Kratos::BlockBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >.
|
inlinevirtual |
This function is designed to be called once to perform all the checks needed on the input provided. Checks can be "expensive" as the function is designed to catch user's errors.
rModelPart |
Reimplemented in Kratos::ReductionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >, Kratos::ExplicitBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >, and Kratos::BlockBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >.
|
inlinevirtual |
This function is intended to be called at the end of the solution step to clean up memory storage not needed.
Reimplemented in Kratos::ReductionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >, Kratos::ExplicitBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >, and Kratos::BlockBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >.
|
inlinevirtual |
This method returns the components of the system of equations depending of the echo level.
|
inlinevirtual |
Performs all the required operations that should be done (for each step) after solving the solution step.
this function must be called only once per step.
Reimplemented in Kratos::ReductionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >, and Kratos::BlockBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >.
|
inlinevirtual |
Allows to get the list of system Dofs.
|
inlinevirtual |
|
inline |
Get size of the system.
|
inline |
Get linear solver.
|
inline |
Get strategy options.
|
inlinevirtual |
Performs all the required operations that should be done (for each step) before solving the solution step.
this function must be called only once per step.
Reimplemented in Kratos::ReductionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >, and Kratos::BlockBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >.
Kratos::SolutionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >::KRATOS_CLASS_POINTER_DEFINITION | ( | SolutionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver > | ) |
Pointer definition of SolutionBuilderAndSolver.
|
inlinevirtual |
This sets the level of echo for the builder and solver.
Level | of echo for the builder and solver |
{ 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... }
|
inline |
Sets strategy options.
|
inlinevirtual |
Builds the list of the DofSets involved in the problem by "asking" to each element and condition its Dofs.
The list of dofs is stores insde the SolutionBuilderAndSolver as it is closely connected to the way the matrix and RHS are built
Reimplemented in Kratos::ReductionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >, and Kratos::BlockBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >.
|
inlinevirtual |
organises the dofset in order to speed up the building phase
Reimplemented in Kratos::ReductionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >, and Kratos::BlockBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >.
|
inlinevirtual |
Resizes and Initializes the system vectors and matrices after SetUpDofSet and SetUpSytem has been called.
Reimplemented in Kratos::ReductionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >, and Kratos::BlockBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >.
|
inlinevirtual |
This is a call to the linear system solver.
Reimplemented in Kratos::ReductionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >, and Kratos::BlockBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >.
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |