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.
|
A scheme for BDF2 time integration. More...
#include <bdf2_turbulent_scheme.h>
Public Member Functions | |
Life Cycle | |
BDF2TurbulentScheme () | |
Default constructor. More... | |
BDF2TurbulentScheme (Process::Pointer pTurbulenceModel) | |
Constructor to use the formulation combined with a turbulence model. More... | |
BDF2TurbulentScheme (const Kratos::Variable< int > &rPeriodicVar) | |
Constructor for periodic boundary conditions. More... | |
~BDF2TurbulentScheme () override | |
Destructor. More... | |
Operations | |
int | Check (ModelPart &rModelPart) override |
Check input data for errors. More... | |
void | Initialize (ModelPart &rModelPart) override |
This is the place to initialize the Scheme. More... | |
void | InitializeSolutionStep (ModelPart &rModelPart, TSystemMatrixType &A, TSystemVectorType &Dx, TSystemVectorType &b) override |
Set the time iteration coefficients. More... | |
void | InitializeNonLinIteration (ModelPart &rModelPart, TSystemMatrixType &A, TSystemVectorType &Dx, TSystemVectorType &b) override |
unction to be called when it is needed to initialize an iteration. It is designed to be called at the beginning of each non linear iteration More... | |
void | FinalizeNonLinIteration (ModelPart &rModelPart, TSystemMatrixType &A, TSystemVectorType &Dx, TSystemVectorType &b) override |
Function to be called when it is needed to finalize an iteration. It is designed to be called at the end of each non linear iteration. More... | |
void | Predict (ModelPart &rModelPart, DofsArrayType &rDofSet, TSystemMatrixType &A, TSystemVectorType &Dx, TSystemVectorType &b) override |
Start the iteration by providing a first approximation to the solution. More... | |
void | Update (ModelPart &rModelPart, DofsArrayType &rDofSet, TSystemMatrixType &A, TSystemVectorType &Dx, TSystemVectorType &b) override |
Store the iteration results as solution step variables and update acceleration after a Newton-Raphson iteration. More... | |
void | CalculateSystemContributions (Element &rCurrentElement, LocalSystemMatrixType &LHS_Contribution, LocalSystemVectorType &RHS_Contribution, Element::EquationIdVectorType &rEquationId, const ProcessInfo &rCurrentProcessInfo) override |
This function is designed to be called in the builder and solver to introduce the selected time integration scheme. More... | |
void | CalculateRHSContribution (Element &rCurrentElement, LocalSystemVectorType &RHS_Contribution, Element::EquationIdVectorType &rEquationId, const ProcessInfo &rCurrentProcessInfo) override |
This function is designed to calculate just the RHS contribution. More... | |
void | CalculateSystemContributions (Condition &rCurrentCondition, LocalSystemMatrixType &LHS_Contribution, LocalSystemVectorType &RHS_Contribution, Element::EquationIdVectorType &rEquationId, const ProcessInfo &rCurrentProcessInfo) override |
Functions totally analogous to the precedent but applied to the "condition" objects. More... | |
void | CalculateRHSContribution (Condition &rCurrentCondition, LocalSystemVectorType &RHS_Contribution, Element::EquationIdVectorType &rEquationId, const ProcessInfo &rCurrentProcessInfo) override |
Functions totally analogous to the precedent but applied to the "condition" objects. More... | |
void | Clear () override |
Free memory allocated by this object. More... | |
Input and output | |
std::string | Info () const override |
Turn back information as a string. More... | |
void | PrintInfo (std::ostream &rOStream) const override |
Print information about this object. More... | |
void | PrintData (std::ostream &rOStream) const override |
Print object's data. More... | |
Public Member Functions inherited from Kratos::Scheme< TSparseSpace, TDenseSpace > | |
Scheme () | |
Default Constructor. More... | |
Scheme (Parameters ThisParameters) | |
Constructor with Parameters. More... | |
Scheme (Scheme &rOther) | |
virtual | ~Scheme () |
KRATOS_CLASS_POINTER_DEFINITION (Scheme) | |
Pointer definition of Scheme. More... | |
virtual ClassType::Pointer | Create (Parameters ThisParameters) const |
Create method. More... | |
virtual Pointer | Clone () |
Clone method. More... | |
bool | SchemeIsInitialized () |
This method returns if the scheme is initialized. More... | |
void | SetSchemeIsInitialized (bool SchemeIsInitializedFlag=true) |
This method sets if the elements have been initialized or not (true by default) More... | |
bool | ElementsAreInitialized () |
This method returns if the elements are initialized. More... | |
void | SetElementsAreInitialized (bool ElementsAreInitializedFlag=true) |
This method sets if the elements have been initialized or not (true by default) More... | |
bool | ConditionsAreInitialized () |
This method returns if the conditions are initialized. More... | |
void | SetConditionsAreInitialized (bool ConditionsAreInitializedFlag=true) |
This method sets if the conditions have been initialized or not (true by default) More... | |
virtual void | InitializeElements (ModelPart &rModelPart) |
This is the place to initialize the elements. More... | |
virtual void | InitializeConditions (ModelPart &rModelPart) |
This is the place to initialize the conditions. More... | |
virtual void | FinalizeSolutionStep (ModelPart &rModelPart, TSystemMatrixType &A, TSystemVectorType &Dx, TSystemVectorType &b) |
Function called once at the end of a solution step, after convergence is reached if an iterative process is needed. More... | |
virtual void | CalculateOutputData (ModelPart &rModelPart, DofsArrayType &rDofSet, TSystemMatrixType &A, TSystemVectorType &Dx, TSystemVectorType &b) |
Functions to be called to prepare the data needed for the output of results. More... | |
virtual void | CleanOutputData () |
Functions that cleans the results data. More... | |
virtual void | Clean () |
This function is intended to be called at the end of the solution step to clean up memory storage not needed after the end of the solution step. More... | |
virtual int | Check (const ModelPart &rModelPart) const |
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... | |
virtual void | CalculateLHSContribution (Element &rElement, LocalSystemMatrixType &LHS_Contribution, Element::EquationIdVectorType &rEquationIdVector, const ProcessInfo &rCurrentProcessInfo) |
This function is designed to calculate just the LHS contribution. More... | |
virtual void | CalculateLHSContribution (Condition &rCondition, LocalSystemMatrixType &LHS_Contribution, Element::EquationIdVectorType &rEquationIdVector, const ProcessInfo &rCurrentProcessInfo) |
Functions totally analogous to the precedent but applied to the "condition" objects. More... | |
virtual void | EquationId (const Element &rElement, Element::EquationIdVectorType &rEquationId, const ProcessInfo &rCurrentProcessInfo) |
This method gets the eqaution id corresponding to the current element. More... | |
virtual void | EquationId (const Condition &rCondition, Element::EquationIdVectorType &rEquationId, const ProcessInfo &rCurrentProcessInfo) |
Functions totally analogous to the precedent but applied to the "condition" objects. More... | |
virtual void | GetDofList (const Element &rElement, Element::DofsVectorType &rDofList, const ProcessInfo &rCurrentProcessInfo) |
Function that returns the list of Degrees of freedom to be assembled in the system for a Given element. More... | |
virtual void | GetDofList (const Condition &rCondition, Element::DofsVectorType &rDofList, const ProcessInfo &rCurrentProcessInfo) |
Function that returns the list of Degrees of freedom to be assembled in the system for a Given condition. More... | |
virtual Parameters | GetDefaultParameters () const |
This method provides the defaults parameters to avoid conflicts between the different constructors. More... | |
Protected Member Functions | |
Protected Operations | |
void | SetTimeCoefficients (ProcessInfo &rCurrentProcessInfo) |
Calculate the coefficients for time iteration. More... | |
virtual void | UpdateDofs (DofsArrayType &rDofSet, TSystemVectorType &Dx) |
Update Dof values after a Newton-Raphson iteration. More... | |
void | UpdateAcceleration (ModelPart &rModelPart, const Vector &rBDFcoefs) |
Update Dof values after a Newton-Raphson iteration. More... | |
void | CombineLHSContributions (LocalSystemMatrixType &rLHS, LocalSystemMatrixType &rMass, LocalSystemMatrixType &rDamp, const ProcessInfo &rCurrentProcessInfo) |
template<class TObject > | |
void | AddDynamicRHSContribution (TObject &rObject, LocalSystemVectorType &rRHS, LocalSystemMatrixType &rMass, const ProcessInfo &rCurrentProcessInfo) |
void | FullProjection (ModelPart &rModelPart) |
void | LumpedProjection (ModelPart &rModelPart) |
void | PeriodicConditionProjectionCorrection (ModelPart &rModelPart) |
void | AssemblePeriodicContributionToProjections (Geometry< Node > &rGeometry) |
void | CorrectContributionsOnPeriodicNode (Node &rNode) |
Protected Member Functions inherited from Kratos::Scheme< TSparseSpace, TDenseSpace > | |
virtual Parameters | ValidateAndAssignParameters (Parameters ThisParameters, const Parameters DefaultParameters) const |
This method validate and assign default parameters. More... | |
virtual void | AssignSettings (const Parameters ThisParameters) |
This method assigns settings to member variables. More... | |
Type Definitions | |
typedef Scheme< TSparseSpace, TDenseSpace > | BaseType |
typedef TSparseSpace::DataType | TDataType |
typedef TSparseSpace::MatrixType | TSystemMatrixType |
typedef TSparseSpace::VectorType | TSystemVectorType |
typedef TDenseSpace::MatrixType | LocalSystemMatrixType |
typedef TDenseSpace::VectorType | LocalSystemVectorType |
typedef Dof< TDataType > | TDofType |
typedef BaseType::DofsArrayType | DofsArrayType |
typedef CoordinateTransformationUtils< LocalSystemMatrixType, LocalSystemVectorType, double > | RotationToolType |
typedef RotationToolType::UniquePointer | RotationToolPointerType |
KRATOS_CLASS_POINTER_DEFINITION (BDF2TurbulentScheme) | |
Pointer definition of BDF2TurbulentScheme. More... | |
Additional Inherited Members | |
Public Types inherited from Kratos::Scheme< TSparseSpace, TDenseSpace > | |
using | ClassType = Scheme< TSparseSpace, TDenseSpace > |
The definition of the current class. More... | |
using | TDataType = typename TSparseSpace::DataType |
Data type definition. More... | |
using | TSystemMatrixType = typename TSparseSpace::MatrixType |
Matrix type definition. More... | |
using | TSystemVectorType = typename TSparseSpace::VectorType |
Vector type definition. More... | |
using | LocalSystemMatrixType = typename TDenseSpace::MatrixType |
Local system matrix type definition. More... | |
using | LocalSystemVectorType = typename TDenseSpace::VectorType |
Local system vector type definition. More... | |
using | TDofType = Dof< double > |
DoF type definition. More... | |
using | DofsArrayType = ModelPart::DofsArrayType |
DoF array type definition. More... | |
using | ElementsArrayType = ModelPart::ElementsContainerType |
Elements containers definition. More... | |
using | ConditionsArrayType = ModelPart::ConditionsContainerType |
Conditions containers definition. More... | |
Static Public Member Functions inherited from Kratos::Scheme< TSparseSpace, TDenseSpace > | |
static std::string | Name () |
Returns the name of the class as used in the settings (snake_case format) More... | |
Protected Attributes inherited from Kratos::Scheme< TSparseSpace, TDenseSpace > | |
bool | mSchemeIsInitialized |
bool | mElementsAreInitialized |
Flag to be used in controlling if the Scheme has been initialized or not. More... | |
bool | mConditionsAreInitialized |
Flag taking in account if the elements were initialized correctly or not. More... | |
A scheme for BDF2 time integration.
typedef Scheme<TSparseSpace,TDenseSpace> Kratos::BDF2TurbulentScheme< TSparseSpace, TDenseSpace >::BaseType |
typedef BaseType::DofsArrayType Kratos::BDF2TurbulentScheme< TSparseSpace, TDenseSpace >::DofsArrayType |
typedef TDenseSpace::MatrixType Kratos::BDF2TurbulentScheme< TSparseSpace, TDenseSpace >::LocalSystemMatrixType |
typedef TDenseSpace::VectorType Kratos::BDF2TurbulentScheme< TSparseSpace, TDenseSpace >::LocalSystemVectorType |
typedef RotationToolType::UniquePointer Kratos::BDF2TurbulentScheme< TSparseSpace, TDenseSpace >::RotationToolPointerType |
typedef CoordinateTransformationUtils<LocalSystemMatrixType, LocalSystemVectorType, double> Kratos::BDF2TurbulentScheme< TSparseSpace, TDenseSpace >::RotationToolType |
typedef TSparseSpace::DataType Kratos::BDF2TurbulentScheme< TSparseSpace, TDenseSpace >::TDataType |
typedef Dof<TDataType> Kratos::BDF2TurbulentScheme< TSparseSpace, TDenseSpace >::TDofType |
typedef TSparseSpace::MatrixType Kratos::BDF2TurbulentScheme< TSparseSpace, TDenseSpace >::TSystemMatrixType |
typedef TSparseSpace::VectorType Kratos::BDF2TurbulentScheme< TSparseSpace, TDenseSpace >::TSystemVectorType |
|
inline |
Default constructor.
|
inline |
Constructor to use the formulation combined with a turbulence model.
The turbulence model is assumed to be implemented as a Kratos::Process. The model's Execute() method wil be called at the start of each non-linear iteration.
pTurbulenceModel | pointer to the turbulence model |
|
inline |
Constructor for periodic boundary conditions.
rPeriodicVar | the variable used to store periodic pair indices. |
|
inlineoverride |
Destructor.
|
inlineprotected |
|
inlineprotected |
|
inlineoverridevirtual |
Functions totally analogous to the precedent but applied to the "condition" objects.
rCondition | The condition to compute |
RHS_Contribution | The RHS vector contribution |
rEquationIdVector | The ID's of the condition degrees of freedom |
rCurrentProcessInfo | The current process info instance |
Reimplemented from Kratos::Scheme< TSparseSpace, TDenseSpace >.
|
inlineoverridevirtual |
This function is designed to calculate just the RHS contribution.
rElement | The element to compute |
RHS_Contribution | The RHS vector contribution |
rEquationIdVector | The ID's of the element degrees of freedom |
rCurrentProcessInfo | The current process info instance |
Reimplemented from Kratos::Scheme< TSparseSpace, TDenseSpace >.
|
inlineoverridevirtual |
Functions totally analogous to the precedent but applied to the "condition" objects.
rCondition | The condition to compute |
LHS_Contribution | The LHS matrix contribution |
RHS_Contribution | The RHS vector contribution |
rEquationIdVector | The ID's of the condition degrees of freedom |
rCurrentProcessInfo | The current process info instance |
Reimplemented from Kratos::Scheme< TSparseSpace, TDenseSpace >.
|
inlineoverridevirtual |
This function is designed to be called in the builder and solver to introduce the selected time integration scheme.
It "asks" the matrix needed to the element and performs the operations needed to introduce the selected time integration scheme. This function calculates at the same time the contribution to the LHS and to the RHS of the system
rElement | The element to compute |
LHS_Contribution | The LHS matrix contribution |
RHS_Contribution | The RHS vector contribution |
rEquationIdVector | The ID's of the element degrees of freedom |
rCurrentProcessInfo | The current process info instance |
Reimplemented from Kratos::Scheme< TSparseSpace, TDenseSpace >.
|
inlineoverridevirtual |
Check input data for errors.
rModelPart | The fluid's ModelPart |
Reimplemented from Kratos::Scheme< TSparseSpace, TDenseSpace >.
|
inlineoverridevirtual |
Free memory allocated by this object.
Reimplemented from Kratos::Scheme< TSparseSpace, TDenseSpace >.
Reimplemented in Kratos::BDF2TurbulentSchemeDEMCoupled< TSparseSpace, TDenseSpace >.
|
inlineprotected |
|
inlineprotected |
|
inlineoverridevirtual |
Function to be called when it is needed to finalize an iteration. It is designed to be called at the end of each non linear iteration.
rModelPart | The model part of the problem to solve |
A | LHS matrix |
Dx | Incremental update of primary variables |
b | RHS Vector |
Reimplemented from Kratos::Scheme< TSparseSpace, TDenseSpace >.
Reimplemented in Kratos::BDF2TurbulentSchemeDEMCoupled< TSparseSpace, TDenseSpace >.
|
inlineprotected |
|
inlineoverridevirtual |
Turn back information as a string.
Reimplemented from Kratos::Scheme< TSparseSpace, TDenseSpace >.
Reimplemented in Kratos::BDF2TurbulentSchemeDEMCoupled< TSparseSpace, TDenseSpace >.
|
inlineoverridevirtual |
This is the place to initialize the Scheme.
This is intended to be called just once when the strategy is initialized
rModelPart | The model part of the problem to solve |
Reimplemented from Kratos::Scheme< TSparseSpace, TDenseSpace >.
|
inlineoverridevirtual |
unction to be called when it is needed to initialize an iteration. It is designed to be called at the beginning of each non linear iteration
The function is called in the builder for memory efficiency
rModelPart | The model part of the problem to solve |
A | LHS matrix |
Dx | Incremental update of primary variables |
b | RHS Vector |
Reimplemented from Kratos::Scheme< TSparseSpace, TDenseSpace >.
Reimplemented in Kratos::BDF2TurbulentSchemeDEMCoupled< TSparseSpace, TDenseSpace >.
|
inlineoverridevirtual |
Set the time iteration coefficients.
Reimplemented from Kratos::Scheme< TSparseSpace, TDenseSpace >.
Reimplemented in Kratos::BDF2TurbulentSchemeDEMCoupled< TSparseSpace, TDenseSpace >.
Kratos::BDF2TurbulentScheme< TSparseSpace, TDenseSpace >::KRATOS_CLASS_POINTER_DEFINITION | ( | BDF2TurbulentScheme< TSparseSpace, TDenseSpace > | ) |
Pointer definition of BDF2TurbulentScheme.
|
inlineprotected |
|
inlineprotected |
On periodic boundaries, the nodal area and the values to project need to take into account contributions from elements on both sides of the boundary. This is done using the conditions and the non-historical nodal data containers as follows:
1- The partition that owns the PeriodicCondition adds the values on both nodes to their non-historical containers.
2- The non-historical containers are added across processes, communicating the right value from the condition owner to all partitions.
3- The value on all periodic nodes is replaced by the one received in step 2.
|
inlineoverridevirtual |
Start the iteration by providing a first approximation to the solution.
Reimplemented from Kratos::Scheme< TSparseSpace, TDenseSpace >.
|
inlineoverridevirtual |
Print object's data.
Reimplemented from Kratos::Scheme< TSparseSpace, TDenseSpace >.
Reimplemented in Kratos::BDF2TurbulentSchemeDEMCoupled< TSparseSpace, TDenseSpace >.
|
inlineoverridevirtual |
Print information about this object.
Reimplemented from Kratos::Scheme< TSparseSpace, TDenseSpace >.
Reimplemented in Kratos::BDF2TurbulentSchemeDEMCoupled< TSparseSpace, TDenseSpace >.
|
inlineprotected |
Calculate the coefficients for time iteration.
rCurrentProcessInfo | ProcessInfo instance from the fluid ModelPart. Must contain DELTA_TIME and BDF_COEFFICIENTS variables. |
|
inlineoverridevirtual |
Store the iteration results as solution step variables and update acceleration after a Newton-Raphson iteration.
rModelPart | fluid ModelPart |
rDofSet | DofSet containing the Newton-Raphson system degrees of freedom. |
A | Newton-Raphson system matrix (unused) |
Dx | Newton-Raphson iteration solution |
b | Newton-Raphson right hand side (unused) |
Reimplemented from Kratos::Scheme< TSparseSpace, TDenseSpace >.
|
inlineprotected |
|
inlineprotectedvirtual |
Update Dof values after a Newton-Raphson iteration.
rDofSet | Container for the Degrees of freedom in the system |
Dx | Solution of the linear system |