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 based on block matrix. More...
#include <block_builder_and_solver.hpp>
Classes | |
struct | dof_iterator_equal |
struct | dof_iterator_hash |
Public Member Functions | |
Life Cycle | |
BlockBuilderAndSolver (LinearSolverPointerType pLinearSystemSolver) | |
Default Constructor. More... | |
~BlockBuilderAndSolver () override | |
Destructor. More... | |
Operations | |
void | BuildLHS (SchemePointerType pScheme, ModelPart &rModelPart, SystemMatrixType &rA) override |
Function to perform the building of the LHS,. More... | |
void | BuildRHS (SchemePointerType pScheme, ModelPart &rModelPart, SystemVectorType &rb) override |
Function to perform the build of the RHS. More... | |
void | Build (SchemePointerType pScheme, ModelPart &rModelPart, SystemMatrixType &rA, SystemVectorType &rb) override |
Function to perform the building of the LHS and RHS. More... | |
void | SystemSolve (SystemMatrixType &rA, SystemVectorType &rDx, SystemVectorType &rb) override |
This is a call to the linear system solver. More... | |
void | BuildAndSolve (SchemePointerType pScheme, ModelPart &rModelPart, SystemMatrixType &rA, SystemVectorType &rDx, SystemVectorType &rb) override |
Function to perform the building and solving phase at the same time. More... | |
void | BuildRHSAndSolve (SchemePointerType pScheme, ModelPart &rModelPart, SystemMatrixType &rA, SystemVectorType &rDx, SystemVectorType &rb) override |
Function to perform the building of the RHS and solving phase at the same time. More... | |
void | ApplyDirichletConditions (SchemePointerType pScheme, ModelPart &rModelPart, SystemMatrixType &rA, SystemVectorType &rDx, SystemVectorType &rb) override |
applies the dirichlet conditions. More... | |
void | SetUpDofSet (SchemePointerType pScheme, ModelPart &rModelPart) override |
Builds the list of the DofSets involved in the problem by "asking" to each element and condition its Dofs. More... | |
void | SetUpSystem () override |
organises the dofset in order to speed up the building phase More... | |
void | SetUpSystemMatrices (SchemePointerType pScheme, ModelPart &rModelPart, SystemMatrixPointerType &pA, SystemVectorPointerType &pDx, SystemVectorPointerType &pb) override |
Resizes and Initializes the system vectors and matrices after SetUpDofSet and SetUpSytem has been called. More... | |
void | InitializeSolutionStep (SchemePointerType pScheme, ModelPart &rModelPart, SystemMatrixPointerType &pA, SystemVectorPointerType &pDx, SystemVectorPointerType &pb) override |
Performs all the required operations that should be done (for each step) before solving the solution step. More... | |
void | FinalizeSolutionStep (SchemePointerType pScheme, ModelPart &rModelPart, SystemMatrixPointerType &pA, SystemVectorPointerType &pDx, SystemVectorPointerType &pb) override |
Performs all the required operations that should be done (for each step) after solving the solution step. More... | |
void | CalculateReactions (SchemePointerType pScheme, ModelPart &rModelPart, SystemMatrixType &rA, SystemVectorType &rDx, SystemVectorType &rb) override |
Calculates system reactions. More... | |
void | Clear () override |
This function is intended to be called at the end of the solution step to clean up memory storage not needed. More... | |
int | Check (ModelPart &r_mUSE_GOOGLE_HASHodel_part) override |
Public Member Functions inherited from Kratos::SolutionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver > | |
SolutionBuilderAndSolver () | |
Default Constructor. More... | |
SolutionBuilderAndSolver (LinearSolverPointerType pLinearSystemSolver) | |
Constructor. More... | |
~SolutionBuilderAndSolver () override | |
Destructor. More... | |
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... | |
KRATOS_CLASS_POINTER_DEFINITION (SolutionBuilderAndSolver) | |
Pointer definition of SolutionBuilderAndSolver. 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 Member Functions | |
Protected Operations | |
void | SystemSolveWithPhysics (SystemMatrixType &rA, SystemVectorType &rDx, SystemVectorType &rb, ModelPart &rModelPart) |
virtual void | ConstructMatrixStructure (SchemePointerType pScheme, SystemMatrixType &rA, ElementsContainerType &rElements, ConditionsContainerType &rConditions, ProcessInfo &rCurrentProcessInfo) |
void | AssembleLHS (SystemMatrixType &rA, LocalSystemMatrixType &rLHS_Contribution, Element::EquationIdVectorType &rEquationId) |
void | AssembleRHS (SystemVectorType &rb, LocalSystemVectorType &rRHS_Contribution, Element::EquationIdVectorType &rEquationId) |
void | Assemble (SystemMatrixType &rA, SystemVectorType &rb, const LocalSystemMatrixType &rLHS_Contribution, const LocalSystemVectorType &rRHS_Contribution, Element::EquationIdVectorType &rEquationId) |
Additional Inherited Members | |
Public Types inherited from Kratos::SolutionBuilderAndSolver< 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 TDenseSpace::MatrixType | LocalSystemMatrixType |
typedef TDenseSpace::VectorType | LocalSystemVectorType |
typedef SolutionScheme< TSparseSpace, TDenseSpace > | SchemeType |
typedef SchemeType::Pointer | SchemePointerType |
typedef TLinearSolver::Pointer | LinearSolverPointerType |
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) |
Protected Attributes inherited from Kratos::SolutionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver > | |
LinearSolverPointerType | mpLinearSystemSolver |
DofsArrayType | mDofSet |
Flags | mOptions |
unsigned int | mEquationSystemSize |
int | mEchoLevel |
SystemVectorPointerType | mpReactionsVector |
Solution Buider and Solver based on block matrix.
This is builder class the system is not reduced, 1 is set in the diagonal
typedef BaseType::Pointer Kratos::BlockBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >::BasePointerType |
typedef SolutionBuilderAndSolver<TSparseSpace, TDenseSpace, TLinearSolver> Kratos::BlockBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >::BaseType |
typedef ModelPart::ConditionsContainerType Kratos::BlockBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >::ConditionsContainerType |
typedef BaseType::DofsArrayType Kratos::BlockBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >::DofsArrayType |
typedef ModelPart::ElementsContainerType Kratos::BlockBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >::ElementsContainerType |
typedef BaseType::LinearSolverPointerType Kratos::BlockBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >::LinearSolverPointerType |
typedef BaseType::LocalFlagType Kratos::BlockBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >::LocalFlagType |
typedef BaseType::LocalSystemMatrixType Kratos::BlockBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >::LocalSystemMatrixType |
typedef BaseType::LocalSystemVectorType Kratos::BlockBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >::LocalSystemVectorType |
typedef ModelPart::NodesContainerType Kratos::BlockBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >::NodesContainerType |
typedef BaseType::SchemePointerType Kratos::BlockBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >::SchemePointerType |
typedef BaseType::SystemMatrixPointerType Kratos::BlockBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >::SystemMatrixPointerType |
typedef BaseType::SystemMatrixType Kratos::BlockBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >::SystemMatrixType |
typedef BaseType::SystemVectorPointerType Kratos::BlockBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >::SystemVectorPointerType |
typedef BaseType::SystemVectorType Kratos::BlockBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >::SystemVectorType |
|
inline |
Default Constructor.
|
inlineoverride |
Destructor.
|
inlineoverridevirtual |
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 from Kratos::SolutionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >.
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineoverridevirtual |
Function to perform the building of the LHS and RHS.
Equivalent (but generally faster) then performing BuildLHS and BuildRHS
Reimplemented from Kratos::SolutionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >.
|
inlineoverridevirtual |
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 from Kratos::SolutionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >.
|
inlineoverridevirtual |
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 from Kratos::SolutionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >.
|
inlineoverridevirtual |
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 from Kratos::SolutionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >.
|
inlineoverridevirtual |
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 from Kratos::SolutionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >.
|
inlineoverridevirtual |
Calculates system reactions.
A flag controls if reactions must be calculated
An internal variable to store the reactions vector is needed
Reimplemented from Kratos::SolutionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >.
|
inlineoverridevirtual |
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 from Kratos::SolutionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >.
|
inlineoverridevirtual |
This function is intended to be called at the end of the solution step to clean up memory storage not needed.
Reimplemented from Kratos::SolutionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >.
|
inlineprotectedvirtual |
|
inlineoverridevirtual |
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 from Kratos::SolutionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >.
|
inlineoverridevirtual |
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 from Kratos::SolutionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >.
Kratos::BlockBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >::KRATOS_CLASS_POINTER_DEFINITION | ( | BlockBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver > | ) |
Pointer definition of BlockBuilderAndSolver.
|
inlineoverridevirtual |
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 BuilderAndSolver as it is closely connected to the way the matrix and RHS are built
Reimplemented from Kratos::SolutionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >.
|
inlineoverridevirtual |
organises the dofset in order to speed up the building phase
Reimplemented from Kratos::SolutionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >.
|
inlineoverridevirtual |
Resizes and Initializes the system vectors and matrices after SetUpDofSet and SetUpSytem has been called.
Reimplemented from Kratos::SolutionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >.
|
inlineoverridevirtual |
This is a call to the linear system solver.
Reimplemented from Kratos::SolutionBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >.
|
inlineprotected |