![]() |
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 MPM explicit scheme. More...
#include <mpm_explicit_scheme.hpp>
Protected Attributes | |
Member Variables | |
ModelPart & | mr_grid_model_part |
![]() | |
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... | |
Type Definitions | |
typedef Scheme< TSparseSpace, TDenseSpace > | BaseType |
typedef BaseType::TDataType | TDataType |
typedef BaseType::DofsArrayType | DofsArrayType |
typedef Element::DofsVectorType | DofsVectorType |
typedef BaseType::TSystemMatrixType | TSystemMatrixType |
typedef BaseType::TSystemVectorType | TSystemVectorType |
typedef BaseType::LocalSystemVectorType | LocalSystemVectorType |
typedef BaseType::LocalSystemMatrixType | LocalSystemMatrixType |
typedef ModelPart::ElementsContainerType | ElementsArrayType |
typedef ModelPart::ConditionsContainerType | ConditionsArrayType |
typedef BaseType::Pointer | BaseTypePointer |
typedef ModelPart::NodesContainerType | NodesArrayType |
The arrays of elements and nodes. More... | |
typedef ModelPart::NodeIterator | NodeIterator |
Definition for the node iterator. More... | |
typedef std::size_t | SizeType |
Definition of the size type. More... | |
typedef std::size_t | IndexType |
Definition of the index type. More... | |
static constexpr double | numerical_limit = std::numeric_limits<double>::epsilon() |
The definition of the numerical limit. More... | |
KRATOS_CLASS_POINTER_DEFINITION (MPMExplicitScheme) | |
MPMExplicitScheme (ModelPart &grid_model_part) | |
Default constructor. More... | |
virtual | ~MPMExplicitScheme () |
Destructor. More... | |
BaseTypePointer | Clone () override |
void | Initialize (ModelPart &rModelPart) override |
This is the place to initialize the Scheme. This is intended to be called just once when the strategy is initialized. More... | |
void | Update (ModelPart &r_model_part, DofsArrayType &rDofSet, TSystemMatrixType &A, TSystemVectorType &Dx, TSystemVectorType &b) override |
void | UpdateTranslationalDegreesOfFreedom (const ProcessInfo &r_current_process_info, NodeIterator itCurrentNode, const IndexType DisplacementPosition, const double delta_time, const SizeType DomainSize=3) |
void | InitializeSolutionStep (ModelPart &r_model_part, TSystemMatrixType &A, TSystemVectorType &Dx, TSystemVectorType &b) override |
void | calculateGridVelocityAndApplyDirichletBC (const ProcessInfo rCurrentProcessInfo, bool calculateVelocityFromMomenta=false) |
Apply Dirichlet BCs to nodal velocity field. More... | |
void | FinalizeSolutionStep (ModelPart &rModelPart, TSystemMatrixType &A, TSystemVectorType &Dx, TSystemVectorType &b) override |
void | CalculateUpdatedGridVelocityField (const ProcessInfo &rCurrentProcessInfo, ModelPart &rModelPart) |
void | GetDofList (const Element &rCurrentElement, Element::DofsVectorType &ElementalDofList, const ProcessInfo &CurrentProcessInfo) override |
void | GetDofList (const Condition &rCurrentCondition, Element::DofsVectorType &rConditionDofList, const ProcessInfo &rCurrentProcessInfo) override |
int | Check (const ModelPart &rModelPart) const override |
void | CalculateRHSContribution (Element &rCurrentElement, LocalSystemVectorType &RHS_Contribution, Element::EquationIdVectorType &EquationId, const ProcessInfo &rCurrentProcessInfo) override |
This function is designed to calculate just the RHS contribution. More... | |
void | CalculateRHSContribution (Condition &rCurrentCondition, LocalSystemVectorType &RHS_Contribution, Element::EquationIdVectorType &EquationId, const ProcessInfo &rCurrentProcessInfo) override |
Functions that calculates the RHS of a "condition" object. More... | |
Additional Inherited Members | |
![]() | |
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... | |
![]() | |
Scheme () | |
Default Constructor. More... | |
Scheme (Parameters ThisParameters) | |
Constructor with Parameters. More... | |
Scheme (Scheme &rOther) | |
virtual | ~Scheme () |
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 (Scheme) | |
Pointer definition of Scheme. More... | |
virtual ClassType::Pointer | Create (Parameters ThisParameters) const |
Create 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 | InitializeNonLinIteration (ModelPart &rModelPart, TSystemMatrixType &A, TSystemVectorType &Dx, TSystemVectorType &b) |
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... | |
virtual void | FinalizeNonLinIteration (ModelPart &rModelPart, TSystemMatrixType &A, TSystemVectorType &Dx, TSystemVectorType &b) |
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... | |
virtual void | Predict (ModelPart &rModelPart, DofsArrayType &rDofSet, TSystemMatrixType &A, TSystemVectorType &Dx, TSystemVectorType &b) |
Performing the prediction of the solution. 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 void | Clear () |
Liberate internal storage. More... | |
virtual int | Check (ModelPart &rModelPart) |
virtual void | CalculateSystemContributions (Element &rElement, LocalSystemMatrixType &LHS_Contribution, LocalSystemVectorType &RHS_Contribution, Element::EquationIdVectorType &rEquationIdVector, const ProcessInfo &rCurrentProcessInfo) |
This function is designed to be called in the builder and solver to introduce the selected time integration scheme. More... | |
virtual void | CalculateSystemContributions (Condition &rCondition, LocalSystemMatrixType &LHS_Contribution, LocalSystemVectorType &RHS_Contribution, Element::EquationIdVectorType &rEquationIdVector, const ProcessInfo &rCurrentProcessInfo) |
Functions totally analogous to the precedent but applied to the "condition" objects. 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 Parameters | GetDefaultParameters () const |
This method provides the defaults parameters to avoid conflicts between the different constructors. More... | |
![]() | |
static std::string | Name () |
Returns the name of the class as used in the settings (snake_case format) More... | |
![]() | |
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... | |
A MPM explicit scheme.
Scheme options include Forward Euler or Central Difference. Stress update options include Update Stress First (USF), Update Stress Last (USL) and Modified Update Stress Last (MUSL).
typedef Scheme<TSparseSpace, TDenseSpace> Kratos::MPMExplicitScheme< TSparseSpace, TDenseSpace >::BaseType |
typedef BaseType::Pointer Kratos::MPMExplicitScheme< TSparseSpace, TDenseSpace >::BaseTypePointer |
typedef ModelPart::ConditionsContainerType Kratos::MPMExplicitScheme< TSparseSpace, TDenseSpace >::ConditionsArrayType |
typedef BaseType::DofsArrayType Kratos::MPMExplicitScheme< TSparseSpace, TDenseSpace >::DofsArrayType |
typedef Element::DofsVectorType Kratos::MPMExplicitScheme< TSparseSpace, TDenseSpace >::DofsVectorType |
typedef ModelPart::ElementsContainerType Kratos::MPMExplicitScheme< TSparseSpace, TDenseSpace >::ElementsArrayType |
typedef std::size_t Kratos::MPMExplicitScheme< TSparseSpace, TDenseSpace >::IndexType |
Definition of the index type.
typedef BaseType::LocalSystemMatrixType Kratos::MPMExplicitScheme< TSparseSpace, TDenseSpace >::LocalSystemMatrixType |
typedef BaseType::LocalSystemVectorType Kratos::MPMExplicitScheme< TSparseSpace, TDenseSpace >::LocalSystemVectorType |
typedef ModelPart::NodeIterator Kratos::MPMExplicitScheme< TSparseSpace, TDenseSpace >::NodeIterator |
Definition for the node iterator.
typedef ModelPart::NodesContainerType Kratos::MPMExplicitScheme< TSparseSpace, TDenseSpace >::NodesArrayType |
The arrays of elements and nodes.
typedef std::size_t Kratos::MPMExplicitScheme< TSparseSpace, TDenseSpace >::SizeType |
Definition of the size type.
typedef BaseType::TDataType Kratos::MPMExplicitScheme< TSparseSpace, TDenseSpace >::TDataType |
typedef BaseType::TSystemMatrixType Kratos::MPMExplicitScheme< TSparseSpace, TDenseSpace >::TSystemMatrixType |
typedef BaseType::TSystemVectorType Kratos::MPMExplicitScheme< TSparseSpace, TDenseSpace >::TSystemVectorType |
|
inlineexplicit |
Default constructor.
The MPMExplicitScheme method
MaximumDeltaTime | The maximum delta time to be considered |
DeltaTimeFraction | The delta ttime fraction |
DeltaTimePredictionLevel | The prediction level |
|
inlinevirtual |
Destructor.
|
inline |
Apply Dirichlet BCs to nodal velocity field.
|
inlineoverridevirtual |
Functions that calculates the RHS of a "condition" object.
pCondition | The condition to compute |
RHS_Contribution | The RHS vector contribution |
EquationId | 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 >.
|
inline |
|
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.
r_model_part |
Reimplemented from Kratos::Scheme< TSparseSpace, TDenseSpace >.
|
inlineoverridevirtual |
Clone
Reimplemented from Kratos::Scheme< TSparseSpace, TDenseSpace >.
|
inlineoverridevirtual |
Function called once at the end of a solution step, after convergence is reached if an iterative process is needed
Reimplemented from Kratos::Scheme< TSparseSpace, TDenseSpace >.
|
inlineoverridevirtual |
Function that returns the list of Degrees of freedom to be assembled in the system for a Given Element
Reimplemented from Kratos::Scheme< TSparseSpace, TDenseSpace >.
|
inlineoverridevirtual |
Function that returns the list of Degrees of freedom to be assembled in the system for a Given Element
Reimplemented from Kratos::Scheme< 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 of the problem to solve |
Reimplemented from Kratos::Scheme< TSparseSpace, TDenseSpace >.
|
inlineoverridevirtual |
initializes time step solution only for reasons if the time step solution is restarted
r_model_part | |
A | LHS matrix |
Dx | incremental update of primary variables |
b | RHS Vector |
Reimplemented from Kratos::Scheme< TSparseSpace, TDenseSpace >.
Kratos::MPMExplicitScheme< TSparseSpace, TDenseSpace >::KRATOS_CLASS_POINTER_DEFINITION | ( | MPMExplicitScheme< TSparseSpace, TDenseSpace > | ) |
|
inlineoverridevirtual |
Performing the update of the solution Incremental update within newton iteration. It updates the state variables at the end of the time step: u_{n+1}^{k+1}= u_{n+1}^{k}+ \Delta u
r_model_part | |
rDofSet | set of all primary variables |
A | LHS matrix |
Dx | incremental update of primary variables |
b | RHS Vector |
Working in 2D/3D (the definition of DOMAIN_SIZE is check in the Check method)
Reimplemented from Kratos::Scheme< TSparseSpace, TDenseSpace >.
|
inline |
|
protected |
|
staticconstexpr |
The definition of the numerical limit.