Current class provides an implementation for PetrovGalerkinROM builder and solving operations.
More...
|
|
| PetrovGalerkinROMBuilderAndSolver (typename TLinearSolver::Pointer pNewLinearSystemSolver, Parameters ThisParameters) |
|
| ~PetrovGalerkinROMBuilderAndSolver ()=default |
|
|
virtual std::string | Info () const override |
| Turn back information as a string. More...
|
|
virtual void | PrintInfo (std::ostream &rOStream) const override |
| Print information about this object. More...
|
|
virtual void | PrintData (std::ostream &rOStream) const override |
| Print object's data.GetNumberOfROMModes() More...
|
|
Public Member Functions inherited from Kratos::ROMBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver > |
| ROMBuilderAndSolver (typename TLinearSolver::Pointer pNewLinearSystemSolver, Parameters ThisParameters) |
|
| ROMBuilderAndSolver (typename TLinearSolver::Pointer pNewLinearSystemSolver) |
|
| ~ROMBuilderAndSolver ()=default |
|
| KRATOS_CLASS_POINTER_DEFINITION (ROMBuilderAndSolver) |
|
BaseType::Pointer | Create (typename TLinearSolver::Pointer pNewLinearSystemSolver, Parameters ThisParameters) const override |
| Create method. More...
|
|
void | SetUpDofSet (typename TSchemeType::Pointer 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 | CalculateReactions (typename TSchemeType::Pointer pScheme, ModelPart &rModelPart, TSystemMatrixType &rA, TSystemVectorType &rDx, TSystemVectorType &rb) override |
| It computes the reactions of the system. More...
|
|
void | SetUpSystem (ModelPart &rModelPart) override |
| It organises the dofset in order to speed up the building phase. More...
|
|
SizeType | GetNumberOfROMModes () const noexcept |
|
void | ProjectToFineBasis (const TSystemVectorType &rRomUnkowns, const ModelPart &rModelPart, TSystemVectorType &rDx) const |
|
virtual void | InitializeSolutionStep (ModelPart &rModelPart, TSystemMatrixType &rA, TSystemVectorType &rDx, TSystemVectorType &rb) override |
| It applies certain operations at the system of equations at the beginning of the solution step. More...
|
|
void | BuildAndSolve (typename TSchemeType::Pointer pScheme, ModelPart &rModelPart, TSystemMatrixType &A, TSystemVectorType &Dx, TSystemVectorType &b) override |
| Function to perform the building and solving phase at the same time. More...
|
|
void | ResizeAndInitializeVectors (typename TSchemeType::Pointer pScheme, TSystemMatrixPointerType &pA, TSystemVectorPointerType &pDx, TSystemVectorPointerType &pb, ModelPart &rModelPart) override |
| This method initializes and resizes the system of equations. More...
|
|
Parameters | GetDefaultParameters () const override |
| This method provides the defaults parameters to avoid conflicts between the different constructors. More...
|
|
Public Member Functions inherited from Kratos::BuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver > |
| BuilderAndSolver () |
| Default constructor. More...
|
|
| BuilderAndSolver (typename TLinearSolver::Pointer pNewLinearSystemSolver, Parameters ThisParameters) |
| Default constructor with Parameters. More...
|
|
| BuilderAndSolver (typename TLinearSolver::Pointer pNewLinearSystemSolver) |
| Default constructor. More...
|
|
virtual | ~BuilderAndSolver () |
|
void | SetEchoLevel (int Level) |
| It sets the level of echo for the solving strategy. More...
|
|
int | GetEchoLevel () const |
| It returns the echo level. More...
|
|
virtual TSparseSpace::MatrixType & | GetConstraintRelationMatrix () |
| This method returns constraint relation (T) matrix. More...
|
|
virtual TSparseSpace::VectorType & | GetConstraintConstantVector () |
| This method returns constraint constant vector. More...
|
|
| KRATOS_CLASS_POINTER_DEFINITION (BuilderAndSolver) |
| Pointer definition of BuilderAndSolver. More...
|
|
bool | GetCalculateReactionsFlag () const |
| This method returns the flag mCalculateReactionsFlag. More...
|
|
void | SetCalculateReactionsFlag (bool flag) |
| This method sets the flag mCalculateReactionsFlag. More...
|
|
bool | GetDofSetIsInitializedFlag () const |
| This method returns the flag mDofSetIsInitialized. More...
|
|
void | SetDofSetIsInitializedFlag (bool DofSetIsInitialized) |
| This method sets the flag mDofSetIsInitialized. More...
|
|
bool | GetReshapeMatrixFlag () const |
| This method returns the flag mReshapeMatrixFlag. More...
|
|
void | SetReshapeMatrixFlag (bool ReshapeMatrixFlag) |
| This method sets the flag mReshapeMatrixFlag. More...
|
|
unsigned int | GetEquationSystemSize () const |
| This method returns the value mEquationSystemSize. More...
|
|
TLinearSolver::Pointer | GetLinearSystemSolver () const |
| This method return the linear solver used. More...
|
|
void | SetLinearSystemSolver (typename TLinearSolver::Pointer pLinearSystemSolver) |
| This method sets the linear solver to be used. More...
|
|
virtual void | BuildLHS (typename TSchemeType::Pointer pScheme, ModelPart &rModelPart, TSystemMatrixType &rA) |
| Function to perform the building of the LHS, depending on the implementation chosen the size of the matrix could be equal to the total number of Dofs or to the number unrestrained dofs. More...
|
|
virtual void | BuildRHS (typename TSchemeType::Pointer pScheme, ModelPart &rModelPart, TSystemVectorType &rb) |
| Function to perform the build of the RHS. The vector could be sized as the total number of dofs or as the number of unrestrained ones. More...
|
|
virtual void | Build (typename TSchemeType::Pointer pScheme, ModelPart &rModelPart, TSystemMatrixType &rA, TSystemVectorType &rb) |
| equivalent (but generally faster) then performing BuildLHS and BuildRHS More...
|
|
virtual void | BuildLHS_CompleteOnFreeRows (typename TSchemeType::Pointer pScheme, ModelPart &rModelPart, TSystemMatrixType &rA) |
| It builds a rectangular matrix of size n*N where "n" is the number of unrestrained degrees of freedom and "N" is the total number of degrees of freedom involved. More...
|
|
virtual void | BuildLHS_Complete (typename TSchemeType::Pointer pScheme, ModelPart &rModelPart, TSystemMatrixType &rA) |
| It builds a matrix of size N*N where "N" is the total number of degrees of freedom involved. More...
|
|
virtual void | SystemSolve (TSystemMatrixType &rA, TSystemVectorType &rDx, TSystemVectorType &rb) |
| This is a call to the linear system solver. More...
|
|
virtual void | BuildAndSolveLinearizedOnPreviousIteration (typename TSchemeType::Pointer pScheme, ModelPart &rModelPart, TSystemMatrixType &rA, TSystemVectorType &rDx, TSystemVectorType &rb, const bool MoveMesh) |
| Function to perform the building and solving phase at the same time Linearizing with the database at the old iteration. More...
|
|
virtual void | BuildRHSAndSolve (typename TSchemeType::Pointer pScheme, ModelPart &rModelPart, TSystemMatrixType &rA, TSystemVectorType &rDx, TSystemVectorType &rb) |
| Corresponds to the previews, but the System's matrix is considered already built and only the RHS is built again. More...
|
|
virtual void | ApplyDirichletConditions (typename TSchemeType::Pointer pScheme, ModelPart &rModelPart, TSystemMatrixType &rA, TSystemVectorType &rDx, TSystemVectorType &rb) |
| It applies the dirichlet conditions. This operation may be very heavy or completely unexpensive depending on the implementation chosen and on how the System Matrix is built. More...
|
|
virtual void | ApplyDirichletConditions_LHS (typename TSchemeType::Pointer pScheme, ModelPart &rModelPart, TSystemMatrixType &rA, TSystemVectorType &rDx) |
| The same of the precedent but affecting only the LHS. More...
|
|
virtual void | ApplyDirichletConditions_RHS (typename TSchemeType::Pointer pScheme, ModelPart &rModelPart, TSystemVectorType &rDx, TSystemVectorType &rb) |
| The same of the precedent but affecting only the RHS. More...
|
|
virtual void | ApplyRHSConstraints (typename TSchemeType::Pointer pScheme, ModelPart &rModelPart, TSystemVectorType &rb) |
| Applies the constraints with master-slave relation matrix (RHS only) More...
|
|
virtual void | ApplyConstraints (typename TSchemeType::Pointer pScheme, ModelPart &rModelPart, TSystemMatrixType &rA, TSystemVectorType &rb) |
| Applies the constraints with master-slave relation matrix. More...
|
|
virtual DofsArrayType & | GetDofSet () |
| It allows to get the list of Dofs from the element. More...
|
|
virtual const DofsArrayType & | GetDofSet () const |
| It allows to get the list of Dofs from the element. More...
|
|
virtual void | FinalizeSolutionStep (ModelPart &rModelPart, TSystemMatrixType &rA, TSystemVectorType &rDx, TSystemVectorType &rb) |
| It applies certain operations at the system of equations at the end of the solution step. 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) |
| 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. More...
|
|
|
Public Types inherited from Kratos::ROMBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver > |
typedef std::size_t | SizeType |
|
typedef std::size_t | IndexType |
|
typedef ROMBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver > | ClassType |
| The definition of the current class. More...
|
|
typedef BuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver > | BaseType |
| Definition of the classes from the base class. More...
|
|
typedef BaseType::TSchemeType | TSchemeType |
|
typedef BaseType::DofsArrayType | DofsArrayType |
|
typedef BaseType::TSystemMatrixType | TSystemMatrixType |
|
typedef BaseType::TSystemVectorType | TSystemVectorType |
|
typedef BaseType::LocalSystemVectorType | LocalSystemVectorType |
|
typedef BaseType::LocalSystemMatrixType | LocalSystemMatrixType |
|
typedef BaseType::TSystemMatrixPointerType | TSystemMatrixPointerType |
|
typedef BaseType::TSystemVectorPointerType | TSystemVectorPointerType |
|
typedef BaseType::ElementsArrayType | ElementsArrayType |
|
typedef BaseType::ConditionsArrayType | ConditionsArrayType |
|
typedef ModelPart::MasterSlaveConstraintContainerType | MasterSlaveConstraintContainerType |
| Additional definitions. More...
|
|
typedef Element::EquationIdVectorType | EquationIdVectorType |
|
typedef Element::DofsVectorType | DofsVectorType |
|
typedef boost::numeric::ublas::compressed_matrix< double > | CompressedMatrixType |
|
typedef LocalSystemMatrixType | RomSystemMatrixType |
|
typedef LocalSystemVectorType | RomSystemVectorType |
|
typedef Node | NodeType |
| DoF types definition. More...
|
|
typedef NodeType::DofType | DofType |
|
typedef DofType::Pointer | DofPointerType |
|
typedef moodycamel::ConcurrentQueue< DofType::Pointer > | DofQueue |
|
Public Types inherited from Kratos::BuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver > |
typedef BuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver > | ClassType |
| The definition of the current class. More...
|
|
typedef std::size_t | SizeType |
| Definition of the size type. More...
|
|
typedef std::size_t | IndexType |
| Definition of the index type. More...
|
|
typedef TSparseSpace::DataType | TDataType |
| Definition of the data type. More...
|
|
typedef TSparseSpace::MatrixType | TSystemMatrixType |
| Definition of the sparse matrix. More...
|
|
typedef TSparseSpace::VectorType | TSystemVectorType |
| Definition of the vector size. More...
|
|
typedef TSparseSpace::MatrixPointerType | TSystemMatrixPointerType |
| Definition of the pointer to the sparse matrix. More...
|
|
typedef TSparseSpace::VectorPointerType | TSystemVectorPointerType |
| Definition of the pointer to the vector. More...
|
|
typedef TDenseSpace::MatrixType | LocalSystemMatrixType |
| The local matrix definition. More...
|
|
typedef TDenseSpace::VectorType | LocalSystemVectorType |
| The local vector definition. More...
|
|
typedef Scheme< TSparseSpace, TDenseSpace > | TSchemeType |
| Definition of the scheme type. More...
|
|
typedef ModelPart::DofType | TDofType |
| Definition of the DoF class. More...
|
|
typedef ModelPart::DofsArrayType | DofsArrayType |
| Definition of the DoF array type. More...
|
|
typedef ModelPart::NodesContainerType | NodesArrayType |
| The containers of the entities. More...
|
|
typedef ModelPart::ElementsContainerType | ElementsArrayType |
|
typedef ModelPart::ConditionsContainerType | ConditionsArrayType |
|
typedef PointerVectorSet< Element, IndexedObject > | ElementsContainerType |
| The definition of the element container type. More...
|
|
Static Public Member Functions inherited from Kratos::ROMBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver > |
static std::string | Name () |
|
Static Public Member Functions inherited from Kratos::BuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver > |
static std::string | Name () |
| Returns the name of the class as used in the settings (snake_case format) More...
|
|
Protected Member Functions inherited from Kratos::ROMBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver > |
void | BuildRHSNoDirichlet (ModelPart &rModelPart, TSystemVectorType &rb) |
|
void | AssignSettings (const Parameters ThisParameters) override |
| This method assigns settings to member variables. More...
|
|
void | InitializeHROMWeights (ModelPart &rModelPart) |
|
virtual void | BuildROM (typename TSchemeType::Pointer pScheme, ModelPart &rModelPart, RomSystemMatrixType &rA, RomSystemVectorType &rb) |
|
virtual void | SolveROM (ModelPart &rModelPart, RomSystemMatrixType &rA, RomSystemVectorType &rb, TSystemVectorType &rDx) |
|
Protected Member Functions inherited from Kratos::BuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver > |
virtual Parameters | ValidateAndAssignParameters (Parameters ThisParameters, const Parameters DefaultParameters) const |
| This method validate and assign default parameters. More...
|
|
Static Protected Member Functions inherited from Kratos::ROMBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver > |
static DofQueue | ExtractDofSet (typename TSchemeType::Pointer pScheme, ModelPart &rModelPart) |
|
static DofsArrayType | SortAndRemoveDuplicateDofs (DofQueue &rDofQueue) |
|
template<typename TMatrix > |
static void | ResizeIfNeeded (TMatrix &mat, const SizeType rows, const SizeType cols) |
|
template<class TSparseSpace, class TDenseSpace, class TLinearSolver>
class Kratos::PetrovGalerkinROMBuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >
Current class provides an implementation for PetrovGalerkinROM builder and solving operations.
The RHS is constituted by the unbalanced loads (residual) and projected onto the ROM LEFT BASIS. The LHS is constituted by first multiplying the Jacobian or its approximation with the ROM RIGHT BASIS and then projecting it onto the ROM LEFT BASIS, yielding a rectangular system (ROM size) that is then solved using the QR decomposition. 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 (as for the FOM). Imposition of the dirichlet conditions is naturally dealt with as the residual already contains this information (as for the FOM).
- Template Parameters
-
TSparseSpace | The sparse system considered |
TDenseSpace | The dense system considered |
TLinearSolver | The linear solver considered |
- Author
- SebastianAres