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.
List of all members
Kratos::ApplyChimera< TDim > Class Template Reference

This class contains methods applies the continuity between the patch and background using linear master-slave constraints. More...

#include <apply_chimera_process.h>

Inheritance diagram for Kratos::ApplyChimera< TDim >:
Collaboration diagram for Kratos::ApplyChimera< TDim >:

Public Member Functions

Life Cycle
 ApplyChimera (ModelPart &rMainModelPart, Parameters iParameters)
 Constructor. More...
 
virtual ~ApplyChimera ()=default
 Destructor. More...
 
Operations
void SetEchoLevel (int EchoLevel)
 
void SetReformulateEveryStep (bool Reformulate)
 
virtual void ExecuteInitializeSolutionStep () override
 This function will be executed at every time step BEFORE performing the solve phase. More...
 
virtual void ExecuteFinalizeSolutionStep () override
 This function will be executed at every time step AFTER performing the solve phase. More...
 
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. More...
 
- Public Member Functions inherited from Kratos::Process
 KRATOS_CLASS_POINTER_DEFINITION (Process)
 Pointer definition of Process. More...
 
 Process ()
 Default constructor. More...
 
 Process (const Flags options)
 
 ~Process () override
 Destructor. More...
 
void operator() ()
 This operator is provided to call the process as a function and simply calls the Execute method. More...
 
virtual Process::Pointer Create (Model &rModel, Parameters ThisParameters)
 This method creates an pointer of the process. More...
 
virtual void Execute ()
 Execute method is used to execute the Process algorithms. More...
 
virtual void ExecuteInitialize ()
 This function is designed for being called at the beginning of the computations right after reading the model and the groups. More...
 
virtual void ExecuteBeforeSolutionLoop ()
 This function is designed for being execute once before the solution loop but after all of the solvers where built. More...
 
virtual void ExecuteBeforeOutputStep ()
 This function will be executed at every time step BEFORE writing the output. More...
 
virtual void ExecuteAfterOutputStep ()
 This function will be executed at every time step AFTER writing the output. More...
 
virtual void ExecuteFinalize ()
 This function is designed for being called at the end of the computations. More...
 
virtual int Check ()
 This function is designed for being called after ExecuteInitialize ONCE to verify that the input is correct. More...
 
virtual void Clear ()
 This method clears the assignation of the conditions. More...
 
virtual const Parameters GetDefaultParameters () const
 This method provides the defaults parameters to avoid conflicts between the different constructors. More...
 
- Public Member Functions inherited from Kratos::Flags
Flagsoperator= (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
 
 KRATOS_CLASS_POINTER_DEFINITION (Flags)
 Pointer definition of Flags. More...
 
const Flagsoperator|= (const Flags &Other)
 
const Flagsoperator&= (const Flags &Other)
 
 Flags ()
 Default constructor. More...
 
 Flags (Flags const &rOther)
 Copy constructor. More...
 
virtual ~Flags ()
 Destructor. More...
 

Protected Member Functions

Protected Operations
virtual void DoChimeraLoop ()
 Does a loop on the background and patch combinations possible and uses FormulateChimera method. More...
 
virtual void FormulateChimera (const Parameters BackgroundParam, const Parameters PatchParameters, ChimeraHoleCuttingUtility::Domain DomainType)
 Formulates the Chimera conditions with a given set of background and patch combination. More...
 
void CreateConstraintIds (std::vector< int > &rIdVector, const IndexType NumberOfConstraintsRequired)
 Creates a vector of unique constraint ids based on how many required and how many are already present in the mrModelPart. More...
 
virtual void ApplyContinuityWithMpcs (ModelPart &rBoundaryModelPart, PointLocatorType &pBinLocator)
 Applies the continuity between the boundary modelpart and the background. More...
 
template<typename TVariableType >
void AddMasterSlaveRelation (MasterSlaveConstraintContainerType &rMasterSlaveContainer, const LinearMasterSlaveConstraint &rCloneConstraint, unsigned int ConstraintId, NodeType &rMasterNode, TVariableType &rMasterVariable, NodeType &rSlaveNode, TVariableType &rSlaveVariable, const double Weight, const double Constant=0.0)
 Applies the master-slave constraint between the given master and slave nodes with corresponding variable. More...
 
template<typename TVariableType >
void ApplyContinuityWithElement (Geometry< NodeType > &rGeometry, NodeType &rBoundaryNode, Vector &rShapeFuncWeights, TVariableType &rVariable, unsigned int StartIndex, std::vector< int > &rConstraintIdVector, MasterSlaveConstraintContainerType &rMsContainer)
 Applies the master-slave constraint to enforce the continuity between a given geometry/element and a boundary node. More...
 
void ReserveMemoryForConstraintContainers (ModelPart &rModelPart, MasterSlaveContainerVectorType &rContainerVector)
 This function reserves the necessary memory for the contraints in each thread. More...
 
int RemoveExistingConstraintsForNode (ModelPart::NodeType &rBoundaryNode)
 Given a node, this funcition finds and deletes all the existing constraints for that node. More...
 
void AddConstraintsToModelpart (ModelPart &rModelPart, MasterSlaveContainerVectorType &rContainerVector)
 The function transfers all the constraints in the container vector to the modelpart. IMPORTANT: The constraints are directly added to the constraints container of the modelpart. So the parent and child modelparts have no info about these constraints. More...
 
void FormulateConstraints (ModelPart &rBoundaryModelPart, PointLocatorType &rBinLocator, MasterSlaveContainerVectorType &rVelocityMasterSlaveContainerVector, MasterSlaveContainerVectorType &rPressureMasterSlaveContainerVector)
 Loops over the nodes of the given modelpart and uses the binlocater to locate them on a element and formulates respective constraints. More...
 

Protected Attributes

Protected member Variables
ModelPartmrMainModelPart
 
int mNumberOfLevels
 
Parameters mParameters
 
std::unordered_map< IndexType, ConstraintIdsVectorTypemNodeIdToConstraintIdsMap
 
int mEchoLevel
 
bool mReformulateEveryStep
 
std::map< std::string, PointLocatorPointerTypemPointLocatorsMap
 
bool mIsFormulated
 
const std::string mModifiedName = "ChimeraModified"
 
const std::string mBoundaryName = "ChimeraBoundary"
 
const std::string mHoleName = "ChimeraHole"
 

Pointer Definitions

typedef ModelPart::IndexType IndexType
 
typedef ModelPart::NodeType NodeType
 
typedef Kratos::Variable< doubleVariableType
 
typedef std::vector< IndexTypeConstraintIdsVectorType
 
typedef ModelPart::MasterSlaveConstraintType MasterSlaveConstraintType
 
typedef ModelPart::MasterSlaveConstraintContainerType MasterSlaveConstraintContainerType
 
typedef std::vector< MasterSlaveConstraintContainerTypeMasterSlaveContainerVectorType
 
typedef BinBasedFastPointLocator< TDim > PointLocatorType
 
typedef PointLocatorType::Pointer PointLocatorPointerType
 
typedef ModelPart::NodesContainerType NodesContainerType
 
 KRATOS_CLASS_POINTER_DEFINITION (ApplyChimera)
 

Additional Inherited Members

- 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)
 

Detailed Description

template<int TDim>
class Kratos::ApplyChimera< TDim >

This class contains methods applies the continuity between the patch and background using linear master-slave constraints.

This serves as a base class for monolithic and fractional step processes which choose who and where the constraints created are stored. for example velocity and pressure constraints are to be saved seperately for fractional step.

Member Typedef Documentation

◆ ConstraintIdsVectorType

template<int TDim>
typedef std::vector<IndexType> Kratos::ApplyChimera< TDim >::ConstraintIdsVectorType

◆ IndexType

template<int TDim>
typedef ModelPart::IndexType Kratos::ApplyChimera< TDim >::IndexType

◆ MasterSlaveConstraintContainerType

◆ MasterSlaveConstraintType

◆ MasterSlaveContainerVectorType

◆ NodesContainerType

◆ NodeType

template<int TDim>
typedef ModelPart::NodeType Kratos::ApplyChimera< TDim >::NodeType

◆ PointLocatorPointerType

template<int TDim>
typedef PointLocatorType::Pointer Kratos::ApplyChimera< TDim >::PointLocatorPointerType

◆ PointLocatorType

template<int TDim>
typedef BinBasedFastPointLocator<TDim> Kratos::ApplyChimera< TDim >::PointLocatorType

◆ VariableType

template<int TDim>
typedef Kratos::Variable<double> Kratos::ApplyChimera< TDim >::VariableType

Constructor & Destructor Documentation

◆ ApplyChimera()

template<int TDim>
Kratos::ApplyChimera< TDim >::ApplyChimera ( ModelPart rMainModelPart,
Parameters  iParameters 
)
explicit

Constructor.

Parameters
rMainModelPartThe reference to the modelpart which will be used for computations later on.
iParametersThe settings parameters.

◆ ~ApplyChimera()

template<int TDim>
virtual Kratos::ApplyChimera< TDim >::~ApplyChimera ( )
virtualdefault

Destructor.

Member Function Documentation

◆ AddConstraintsToModelpart()

template<int TDim>
void Kratos::ApplyChimera< TDim >::AddConstraintsToModelpart ( ModelPart rModelPart,
MasterSlaveContainerVectorType rContainerVector 
)
protected

The function transfers all the constraints in the container vector to the modelpart. IMPORTANT: The constraints are directly added to the constraints container of the modelpart. So the parent and child modelparts have no info about these constraints.

Parameters
rModelPartThe modelpart to which the constraints are to be added.
rContainerVectorThe container vector which has constraints to transfer

◆ AddMasterSlaveRelation()

template<int TDim>
template<typename TVariableType >
void Kratos::ApplyChimera< TDim >::AddMasterSlaveRelation ( MasterSlaveConstraintContainerType rMasterSlaveContainer,
const LinearMasterSlaveConstraint rCloneConstraint,
unsigned int  ConstraintId,
NodeType rMasterNode,
TVariableType &  rMasterVariable,
NodeType rSlaveNode,
TVariableType &  rSlaveVariable,
const double  Weight,
const double  Constant = 0.0 
)
protected

Applies the master-slave constraint between the given master and slave nodes with corresponding variable.

Parameters
rMasterSlaveContainerThe container to which the constraint to be added (useful to so OpenMP loop)
rCloneConstraintThe prototype of constraint which is to be added.
ConstraintIdThe ID of the constraint to be added.
rMasterNodeThe Master node of the constraint.
rMasterVariableThe variable for the master node.
rSlaveNodeThe Slave node of the constraint.
rSlaveVariableThe variable for the slave node.
WeightThe weight of the Master node.
ConstantThe constant of the master slave relation.

◆ ApplyContinuityWithElement()

template<int TDim>
template<typename TVariableType >
void Kratos::ApplyChimera< TDim >::ApplyContinuityWithElement ( Geometry< NodeType > &  rGeometry,
NodeType rBoundaryNode,
Vector rShapeFuncWeights,
TVariableType &  rVariable,
unsigned int  StartIndex,
std::vector< int > &  rConstraintIdVector,
MasterSlaveConstraintContainerType rMsContainer 
)
protected

Applies the master-slave constraint to enforce the continuity between a given geometry/element and a boundary node.

Parameters
rGeometryThe geometry of the element
rBoundaryNodeThe boundary node for which the connections are to be made.
rShapeFuncWeightsThe shape function weights for the node in the rGeometry.
StartIndexThe start Index of the constraints which are to be added.
rConstraintIdVectorThe vector of the constraints Ids which is accessed with StartIndex.
rMsContainerThe Constraint container to which the contraints are added.

◆ ApplyContinuityWithMpcs()

template<int TDim>
void Kratos::ApplyChimera< TDim >::ApplyContinuityWithMpcs ( ModelPart rBoundaryModelPart,
PointLocatorType pBinLocator 
)
protectedvirtual

Applies the continuity between the boundary modelpart and the background.

Parameters
rBoundaryModelPartThe boundary modelpart for which the continuity is to be enforced.
pBinLocatorThe bin based locator formulated on the background. This is used to locate nodes of rBoundaryModelPart on background.

Reimplemented in Kratos::ApplyChimeraProcessMonolithic< TDim >, and Kratos::ApplyChimeraProcessFractionalStep< TDim >.

◆ CreateConstraintIds()

template<int TDim>
void Kratos::ApplyChimera< TDim >::CreateConstraintIds ( std::vector< int > &  rIdVector,
const IndexType  NumberOfConstraintsRequired 
)
protected

Creates a vector of unique constraint ids based on how many required and how many are already present in the mrModelPart.

Parameters
rIdVectorThe vector which is populated with unique constraint ids.
NumberOfConstraintsRequiredThe number of further constraints required. used for calculation of unique ids.

◆ DoChimeraLoop()

template<int TDim>
void Kratos::ApplyChimera< TDim >::DoChimeraLoop
protectedvirtual

Does a loop on the background and patch combinations possible and uses FormulateChimera method.

◆ ExecuteFinalizeSolutionStep()

template<int TDim>
void Kratos::ApplyChimera< TDim >::ExecuteFinalizeSolutionStep
overridevirtual

This function will be executed at every time step AFTER performing the solve phase.

Reimplemented from Kratos::Process.

Reimplemented in Kratos::ApplyChimeraProcessFractionalStep< TDim >.

◆ ExecuteInitializeSolutionStep()

template<int TDim>
void Kratos::ApplyChimera< TDim >::ExecuteInitializeSolutionStep
overridevirtual

This function will be executed at every time step BEFORE performing the solve phase.

Reimplemented from Kratos::Process.

◆ FormulateChimera()

template<int TDim>
void Kratos::ApplyChimera< TDim >::FormulateChimera ( const Parameters  BackgroundParam,
const Parameters  PatchParameters,
ChimeraHoleCuttingUtility::Domain  DomainType 
)
protectedvirtual

Formulates the Chimera conditions with a given set of background and patch combination.

Parameters
BackgroundParamParameters/Settings for the background
PatchParametersParameters/Settings for the Patch
DomainTypeFlag specifying if the background is the main bg or not

◆ FormulateConstraints()

template<int TDim>
void Kratos::ApplyChimera< TDim >::FormulateConstraints ( ModelPart rBoundaryModelPart,
PointLocatorType rBinLocator,
MasterSlaveContainerVectorType rVelocityMasterSlaveContainerVector,
MasterSlaveContainerVectorType rPressureMasterSlaveContainerVector 
)
protected

Loops over the nodes of the given modelpart and uses the binlocater to locate them on a element and formulates respective constraints.

Parameters
rBoundaryModelPartThe modelpart whose nodes are to be found.
rBinLocatorThe bin based locator formulated on the background. This is used to locate nodes on rBoundaryModelPart.
rVelocityMasterSlaveContainerVectorthe vector of velocity constraints vectors (one for each thread)
rPressureMasterSlaveContainerVectorthe vector of pressure constraints vectors (one for each thread)

◆ Info()

template<int TDim>
std::string Kratos::ApplyChimera< TDim >::Info
overridevirtual

Turn back information as a string.

Reimplemented from Kratos::Process.

Reimplemented in Kratos::ApplyChimeraProcessMonolithic< TDim >, and Kratos::ApplyChimeraProcessFractionalStep< TDim >.

◆ KRATOS_CLASS_POINTER_DEFINITION()

template<int TDim>
Kratos::ApplyChimera< TDim >::KRATOS_CLASS_POINTER_DEFINITION ( ApplyChimera< TDim >  )

◆ PrintData()

template<int TDim>
void Kratos::ApplyChimera< TDim >::PrintData ( std::ostream &  rOStream) const
overridevirtual

◆ PrintInfo()

template<int TDim>
void Kratos::ApplyChimera< TDim >::PrintInfo ( std::ostream &  rOStream) const
overridevirtual

Print information about this object.

Reimplemented from Kratos::Process.

Reimplemented in Kratos::ApplyChimeraProcessMonolithic< TDim >, and Kratos::ApplyChimeraProcessFractionalStep< TDim >.

◆ RemoveExistingConstraintsForNode()

template<int TDim>
int Kratos::ApplyChimera< TDim >::RemoveExistingConstraintsForNode ( ModelPart::NodeType rBoundaryNode)
protected

Given a node, this funcition finds and deletes all the existing constraints for that node.

Parameters
rBoundaryNodeThe boundary node for which the connections are to be made.

◆ ReserveMemoryForConstraintContainers()

template<int TDim>
void Kratos::ApplyChimera< TDim >::ReserveMemoryForConstraintContainers ( ModelPart rModelPart,
MasterSlaveContainerVectorType rContainerVector 
)
protected

This function reserves the necessary memory for the contraints in each thread.

Parameters
rModelPartThe modelpart to which the constraints are to be added.
rContainerVectorThe container vector which has constraints to transfer

◆ SetEchoLevel()

template<int TDim>
void Kratos::ApplyChimera< TDim >::SetEchoLevel ( int  EchoLevel)

◆ SetReformulateEveryStep()

template<int TDim>
void Kratos::ApplyChimera< TDim >::SetReformulateEveryStep ( bool  Reformulate)

Member Data Documentation

◆ mBoundaryName

template<int TDim>
const std::string Kratos::ApplyChimera< TDim >::mBoundaryName = "ChimeraBoundary"
protected

◆ mEchoLevel

template<int TDim>
int Kratos::ApplyChimera< TDim >::mEchoLevel
protected

◆ mHoleName

template<int TDim>
const std::string Kratos::ApplyChimera< TDim >::mHoleName = "ChimeraHole"
protected

◆ mIsFormulated

template<int TDim>
bool Kratos::ApplyChimera< TDim >::mIsFormulated
protected

◆ mModifiedName

template<int TDim>
const std::string Kratos::ApplyChimera< TDim >::mModifiedName = "ChimeraModified"
protected

◆ mNodeIdToConstraintIdsMap

template<int TDim>
std::unordered_map<IndexType, ConstraintIdsVectorType> Kratos::ApplyChimera< TDim >::mNodeIdToConstraintIdsMap
protected

◆ mNumberOfLevels

template<int TDim>
int Kratos::ApplyChimera< TDim >::mNumberOfLevels
protected

◆ mParameters

template<int TDim>
Parameters Kratos::ApplyChimera< TDim >::mParameters
protected

◆ mPointLocatorsMap

template<int TDim>
std::map<std::string, PointLocatorPointerType> Kratos::ApplyChimera< TDim >::mPointLocatorsMap
protected

◆ mReformulateEveryStep

template<int TDim>
bool Kratos::ApplyChimera< TDim >::mReformulateEveryStep
protected

◆ mrMainModelPart

template<int TDim>
ModelPart& Kratos::ApplyChimera< TDim >::mrMainModelPart
protected

The documentation for this class was generated from the following files: