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 class that implements the interface for different master-slave constraints to be applied on a system. More...
#include <master_slave_constraint.h>
Public Member Functions | |
Life Cycle | |
MasterSlaveConstraint (IndexType Id=0) | |
The default constructor. More... | |
virtual | ~MasterSlaveConstraint () override |
Destructor. More... | |
MasterSlaveConstraint (const MasterSlaveConstraint &rOther) | |
Copy Constructor. More... | |
MasterSlaveConstraint & | operator= (const MasterSlaveConstraint &rOther) |
Assignment operator. More... | |
Operations | |
virtual MasterSlaveConstraint::Pointer | Create (IndexType Id, DofPointerVectorType &rMasterDofsVector, DofPointerVectorType &rSlaveDofsVector, const MatrixType &rRelationMatrix, const VectorType &rConstantVector) const |
Creates a new constraint pointer. More... | |
virtual MasterSlaveConstraint::Pointer | Create (IndexType Id, NodeType &rMasterNode, const VariableType &rMasterVariable, NodeType &rSlaveNode, const VariableType &rSlaveVariable, const double Weight, const double Constant) const |
virtual Pointer | Clone (IndexType NewId) const |
It creates a new constraint pointer and clones the previous constraint data. More... | |
virtual void | Clear () |
Clears the maps contents. More... | |
virtual void | Initialize (const ProcessInfo &rCurrentProcessInfo) |
It is called to initialize the constraint. More... | |
virtual void | Finalize (const ProcessInfo &rCurrentProcessInfo) |
It is called to finalize the constraint. More... | |
virtual void | InitializeSolutionStep (const ProcessInfo &rCurrentProcessInfo) |
This is called in the beginning of each solution step. More... | |
virtual void | InitializeNonLinearIteration (const ProcessInfo &rCurrentProcessInfo) |
This is called for non-linear analysis at the beginning of the iteration process. More... | |
virtual void | FinalizeNonLinearIteration (const ProcessInfo &rCurrentProcessInfo) |
This is called for non-linear analysis at the end of the iteration process. More... | |
virtual void | FinalizeSolutionStep (const ProcessInfo &rCurrentProcessInfo) |
This is called at the end of each solution step. More... | |
virtual void | GetDofList (DofPointerVectorType &rSlaveDofsVector, DofPointerVectorType &rMasterDofsVector, const ProcessInfo &rCurrentProcessInfo) const |
Determines the constrant's slave and master list of DOFs. More... | |
virtual void | SetDofList (const DofPointerVectorType &rSlaveDofsVector, const DofPointerVectorType &rMasterDofsVector, const ProcessInfo &rCurrentProcessInfo) |
Determines the constrant's slave and master list of DOFs. More... | |
virtual void | EquationIdVector (EquationIdVectorType &rSlaveEquationIds, EquationIdVectorType &rMasterEquationIds, const ProcessInfo &rCurrentProcessInfo) const |
This determines the master equation IDs connected to this constraint. More... | |
virtual const DofPointerVectorType & | GetSlaveDofsVector () const |
This method returns the slave dof vector. More... | |
virtual void | SetSlaveDofsVector (const DofPointerVectorType &rSlaveDofsVector) |
This method returns the slave dof vector. More... | |
virtual const DofPointerVectorType & | GetMasterDofsVector () const |
This method returns the slave dof vector. More... | |
virtual void | SetMasterDofsVector (const DofPointerVectorType &rMasterDofsVector) |
This method returns the slave dof vector. More... | |
virtual void | ResetSlaveDofs (const ProcessInfo &rCurrentProcessInfo) |
This method resets the values of the slave dofs. More... | |
virtual void | Apply (const ProcessInfo &rCurrentProcessInfo) |
This method directly applies the master/slave relationship. More... | |
virtual void | SetLocalSystem (const MatrixType &rRelationMatrix, const VectorType &rConstantVector, const ProcessInfo &rCurrentProcessInfo) |
This method allows to set the Local System in case is not computed on running time (internal variable) More... | |
virtual void | GetLocalSystem (MatrixType &rRelationMatrix, VectorType &rConstantVector, const ProcessInfo &rCurrentProcessInfo) const |
This method allows to get the Local System in case is not computed on running time (internal variable) More... | |
virtual void | CalculateLocalSystem (MatrixType &rRelationMatrix, VectorType &rConstantVector, const ProcessInfo &rCurrentProcessInfo) const |
This is called during the assembling process in order. More... | |
virtual int | Check (const ProcessInfo &rCurrentProcessInfo) const |
This method provides the place to perform checks on the completeness of the input and the compatibility with the problem options. More... | |
Input and output | |
virtual std::string | GetInfo () const |
Returns the string containing a detailed description of this object. More... | |
virtual void | PrintInfo (std::ostream &rOStream) const override |
This method prints the current Constraint Id. More... | |
Access | |
DataValueContainer & | Data () |
This method returns the data container of the constraint. More... | |
DataValueContainer const & | GetData () const |
This method returns the data container of the constraint (constant) More... | |
void | SetData (DataValueContainer const &rThisData) |
This method sets the data container of the constraint. More... | |
template<class TDataType > | |
bool | Has (const Variable< TDataType > &rThisVariable) const |
Check if the Data exists with Has(..) methods: More... | |
template<class TVariableType > | |
void | SetValue (const TVariableType &rThisVariable, typename TVariableType::Type const &rValue) |
Set Data with SetValue and the Variable to set. More... | |
template<class TVariableType > | |
TVariableType::Type & | GetValue (const TVariableType &rThisVariable) |
Get Data with GetValue and the Variable to get. More... | |
template<class TVariableType > | |
TVariableType::Type & | GetValue (const TVariableType &rThisVariable) const |
Get Data with GetValue and the Variable to get. More... | |
Inquiry | |
bool | IsActive () const |
Checks if the GeometricalObject is active. More... | |
Public Member Functions inherited from Kratos::IndexedObject | |
IndexedObject (IndexType NewId=0) | |
Default constructor. More... | |
virtual | ~IndexedObject () |
Destructor. More... | |
IndexedObject (IndexedObject const &rOther) | |
Copy constructor. More... | |
IndexedObject & | operator= (IndexedObject const &rOther) |
Assignment operator. More... | |
template<class TObjectType > | |
IndexType | operator() (TObjectType const &rThisObject) const |
IndexType | Id () const |
IndexType | GetId () const |
virtual void | SetId (IndexType NewId) |
IndexType & | DepricatedIdAccess () |
TODO: remove this function when removing data_file_io object. More... | |
virtual std::string | Info () const |
Turn back information as a string. More... | |
virtual void | PrintData (std::ostream &rOStream) const |
Print object's data. More... | |
KRATOS_CLASS_POINTER_DEFINITION (IndexedObject) | |
Pointer definition of IndexedObject. 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 | 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... | |
Type Definitions | |
typedef IndexedObject | BaseType |
The definition of the base class. More... | |
typedef std::size_t | IndexType |
The index type definition. More... | |
typedef Dof< double > | DofType |
The DoF type definition. More... | |
typedef std::vector< DofType::Pointer > | DofPointerVectorType |
The DoF pointer vector type definition. More... | |
typedef Node | NodeType |
The node type definition. More... | |
typedef std::vector< std::size_t > | EquationIdVectorType |
The equation Id vector type definition. More... | |
typedef Matrix | MatrixType |
The matrix type definition. More... | |
typedef Vector | VectorType |
The vector type definition. More... | |
typedef Kratos::Variable< double > | VariableType |
The variable type definition (double) More... | |
KRATOS_CLASS_POINTER_DEFINITION (MasterSlaveConstraint) | |
Pointer definition of MasterSlaveConstraint. More... | |
Serialization | |
class | Serializer |
Additional Inherited Members | |
Public Types inherited from Kratos::IndexedObject | |
typedef std::size_t | IndexType |
The definition of the index type. More... | |
typedef std::size_t | result_type |
The definition of the result_type. More... | |
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) |
A class that implements the interface for different master-slave constraints to be applied on a system.
This is the part that is seen by the user from the python level. Objects of this class are first class citizens of the modelpart.
This class allows to add a master-slave constraint which is of the form
SlaveDofVector = T * MasterDofVector + rConstantVector. (Processing of this is currently not implemented.)
or
SlaveDof = weight * MasterDof + Constant
This class's object will provide its slave, master details and relation matrix between them.
One can add two MasterSlaveConstraint objects with same slave but different masters and weights. Consider user adds : SlaveDof = weight1 * MasterDof1 + Constant1 and : SlaveDof = weight2 * MasterDof2 + Constant2
These are later consolidated in the builder and solver to make : SlaveDof = weight1 * MasterDof1 + weight2 * MasterDof2 + Constant1+Constant2 and then converted to : : SlaveEqID = weight1 * MasterEqId1 + weight2 * MasterEqId2 + Constant1+Constant2 This unique equation is used later on to modify the equation system.
The definition of the base class.
typedef std::vector< DofType::Pointer > Kratos::MasterSlaveConstraint::DofPointerVectorType |
The DoF pointer vector type definition.
The DoF type definition.
typedef std::vector<std::size_t> Kratos::MasterSlaveConstraint::EquationIdVectorType |
The equation Id vector type definition.
typedef std::size_t Kratos::MasterSlaveConstraint::IndexType |
The index type definition.
The matrix type definition.
The node type definition.
The variable type definition (double)
The vector type definition.
|
inlineexplicit |
The default constructor.
IndexType | The Id of the new created constraint |
|
inlineoverridevirtual |
Destructor.
|
inline |
Copy Constructor.
|
inlinevirtual |
This method directly applies the master/slave relationship.
rCurrentProcessInfo | the current process info instance |
Reimplemented in Kratos::LinearMasterSlaveConstraint.
|
inlinevirtual |
This is called during the assembling process in order.
To calculate the relation between the master and slave.
rRelationMatrix | the matrix which relates the master and slave degree of freedom |
rConstant | The constant vector (one entry for each slave) |
rCurrentProcessInfo | the current process info instance |
Reimplemented in Kratos::LinearMasterSlaveConstraint.
|
inlinevirtual |
This method provides the place to perform checks on the completeness of the input and the compatibility with the problem options.
It is designed to be called only once (or anyway, not often) typically at the beginning of the calculations, so to verify that nothing is missing from the input or that no common error is found.
rCurrentProcessInfo |
|
inlinevirtual |
Clears the maps contents.
|
inlinevirtual |
It creates a new constraint pointer and clones the previous constraint data.
NewId | the ID of the new constraint |
Reimplemented in Kratos::LinearMasterSlaveConstraint.
|
inlinevirtual |
Creates a new constraint pointer.
Id | the ID of the new constraint |
rMasterDofsVector | the vector of master degree of freedoms. |
rSlaveDofsVector | the vector of slave degree of freedoms. |
rRelationMatrix | The matrix of weights relating the master DOFs and Slave DOFs |
rConstantVector | The vector of the constants, one entry for each of the slave. |
Reimplemented in Kratos::LinearMasterSlaveConstraint, and Kratos::ContactMasterSlaveConstraint.
|
inlinevirtual |
creates a new constraint pointer
Id | the ID of the new constraint |
rMasterNode | Node which is the master of for this constraint. |
rMasterVariable | the scalar variable which is on the master node. (DOF) |
rSlaveNode | Node which is the slave of for this constraint. |
rSlaveVariable | the scalar variable which is on the slave node. (DOF) |
Weight | The weight with which the master and slave are related s = w*m + c |
Constant | The constant in the master slave relation |
Reimplemented in Kratos::LinearMasterSlaveConstraint, and Kratos::ContactMasterSlaveConstraint.
|
inline |
This method returns the data container of the constraint.
|
inlinevirtual |
This determines the master equation IDs connected to this constraint.
rSlaveEquationIds | The vector of slave equation ids. |
rMasterEquationIds | The vector of master equation ids. |
rCurrentProcessInfo | The current process info instance |
Reimplemented in Kratos::LinearMasterSlaveConstraint.
|
inlinevirtual |
It is called to finalize the constraint.
If the constraint needs to perform any operation before any calculation is done
rCurrentProcessInfo | The current process info instance |
|
inlinevirtual |
This is called for non-linear analysis at the end of the iteration process.
rCurrentProcessInfo | The current process info instance |
Reimplemented in Kratos::ContactMasterSlaveConstraint.
|
inlinevirtual |
This is called at the end of each solution step.
|
inline |
This method returns the data container of the constraint (constant)
|
inlinevirtual |
Determines the constrant's slave and master list of DOFs.
rSlaveDofsVector | The list of slave DOFs |
rMasterDofsVector | The list of slave DOFs |
rCurrentProcessInfo | The current process info instance |
Reimplemented in Kratos::LinearMasterSlaveConstraint.
|
inlinevirtual |
Returns the string containing a detailed description of this object.
Reimplemented in Kratos::SlipConstraint, Kratos::LinearMasterSlaveConstraint, and Kratos::ContactMasterSlaveConstraint.
|
inlinevirtual |
This method allows to get the Local System in case is not computed on running time (internal variable)
rRelationMatrix | the matrix which relates the master and slave degree of freedom |
rConstant | The constant vector (one entry for each slave) |
rCurrentProcessInfo | The current process info instance |
|
inlinevirtual |
This method returns the slave dof vector.
Reimplemented in Kratos::LinearMasterSlaveConstraint.
|
inlinevirtual |
This method returns the slave dof vector.
Reimplemented in Kratos::LinearMasterSlaveConstraint.
|
inline |
Get Data with GetValue and the Variable to get.
rThisVariable | The variable to get |
|
inline |
Get Data with GetValue and the Variable to get.
rThisVariable | The variable to get |
|
inline |
Check if the Data exists with Has(..) methods:
rThisVariable | The variable to be check |
|
inlinevirtual |
It is called to initialize the constraint.
If the constraint needs to perform any operation before any calculation is done
rCurrentProcessInfo | The current process info instance |
|
inlinevirtual |
This is called for non-linear analysis at the beginning of the iteration process.
rCurrentProcessInfo | The current process info instance |
|
inlinevirtual |
This is called in the beginning of each solution step.
rCurrentProcessInfo | The current process info instance |
bool Kratos::MasterSlaveConstraint::IsActive | ( | ) | const |
Checks if the GeometricalObject is active.
Kratos::MasterSlaveConstraint::KRATOS_CLASS_POINTER_DEFINITION | ( | MasterSlaveConstraint | ) |
Pointer definition of MasterSlaveConstraint.
|
inline |
Assignment operator.
|
inlineoverridevirtual |
This method prints the current Constraint Id.
rOStream | The buffer where the information is given |
Reimplemented from Kratos::Flags.
Reimplemented in Kratos::SlipConstraint, Kratos::LinearMasterSlaveConstraint, and Kratos::ContactMasterSlaveConstraint.
|
inlinevirtual |
This method resets the values of the slave dofs.
rCurrentProcessInfo | the current process info instance |
Reimplemented in Kratos::LinearMasterSlaveConstraint.
|
inline |
This method sets the data container of the constraint.
rThisData | The data container to set on mData |
|
inlinevirtual |
Determines the constrant's slave and master list of DOFs.
rSlaveDofsVector | The list of slave DOFs |
rMasterDofsVector | The list of slave DOFs |
rCurrentProcessInfo | The current process info instance |
Reimplemented in Kratos::SlipConstraint, and Kratos::LinearMasterSlaveConstraint.
|
inlinevirtual |
This method allows to set the Local System in case is not computed on running time (internal variable)
rRelationMatrix | the matrix which relates the master and slave degree of freedom |
rConstant | The constant vector (one entry for each slave) |
rCurrentProcessInfo | The current process info instance |
Reimplemented in Kratos::SlipConstraint, and Kratos::LinearMasterSlaveConstraint.
|
inlinevirtual |
This method returns the slave dof vector.
Reimplemented in Kratos::SlipConstraint, and Kratos::LinearMasterSlaveConstraint.
|
inlinevirtual |
This method returns the slave dof vector.
Reimplemented in Kratos::SlipConstraint, and Kratos::LinearMasterSlaveConstraint.
|
inline |
Set Data with SetValue and the Variable to set.
rThisVariable | The variable to be set |
rValue | The value to be set |
|
friend |