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.
|
This class contains methods applies the continuity between the patch and background using linear master-slave constraints. More...
#include <apply_chimera_process.h>
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 | |
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 |
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... | |
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 | |
ModelPart & | mrMainModelPart |
int | mNumberOfLevels |
Parameters | mParameters |
std::unordered_map< IndexType, ConstraintIdsVectorType > | mNodeIdToConstraintIdsMap |
int | mEchoLevel |
bool | mReformulateEveryStep |
std::map< std::string, PointLocatorPointerType > | mPointLocatorsMap |
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< double > | VariableType |
typedef std::vector< IndexType > | ConstraintIdsVectorType |
typedef ModelPart::MasterSlaveConstraintType | MasterSlaveConstraintType |
typedef ModelPart::MasterSlaveConstraintContainerType | MasterSlaveConstraintContainerType |
typedef std::vector< MasterSlaveConstraintContainerType > | MasterSlaveContainerVectorType |
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) |
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.
typedef std::vector<IndexType> Kratos::ApplyChimera< TDim >::ConstraintIdsVectorType |
typedef ModelPart::IndexType Kratos::ApplyChimera< TDim >::IndexType |
typedef ModelPart::MasterSlaveConstraintContainerType Kratos::ApplyChimera< TDim >::MasterSlaveConstraintContainerType |
typedef ModelPart::MasterSlaveConstraintType Kratos::ApplyChimera< TDim >::MasterSlaveConstraintType |
typedef std::vector<MasterSlaveConstraintContainerType> Kratos::ApplyChimera< TDim >::MasterSlaveContainerVectorType |
typedef ModelPart::NodesContainerType Kratos::ApplyChimera< TDim >::NodesContainerType |
typedef ModelPart::NodeType Kratos::ApplyChimera< TDim >::NodeType |
typedef PointLocatorType::Pointer Kratos::ApplyChimera< TDim >::PointLocatorPointerType |
typedef BinBasedFastPointLocator<TDim> Kratos::ApplyChimera< TDim >::PointLocatorType |
typedef Kratos::Variable<double> Kratos::ApplyChimera< TDim >::VariableType |
|
explicit |
Constructor.
rMainModelPart | The reference to the modelpart which will be used for computations later on. |
iParameters | The settings parameters. |
|
virtualdefault |
Destructor.
|
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.
rModelPart | The modelpart to which the constraints are to be added. |
rContainerVector | The container vector which has constraints to transfer |
|
protected |
Applies the master-slave constraint between the given master and slave nodes with corresponding variable.
rMasterSlaveContainer | The container to which the constraint to be added (useful to so OpenMP loop) |
rCloneConstraint | The prototype of constraint which is to be added. |
ConstraintId | The ID of the constraint to be added. |
rMasterNode | The Master node of the constraint. |
rMasterVariable | The variable for the master node. |
rSlaveNode | The Slave node of the constraint. |
rSlaveVariable | The variable for the slave node. |
Weight | The weight of the Master node. |
Constant | The constant of the master slave relation. |
|
protected |
Applies the master-slave constraint to enforce the continuity between a given geometry/element and a boundary node.
rGeometry | The geometry of the element |
rBoundaryNode | The boundary node for which the connections are to be made. |
rShapeFuncWeights | The shape function weights for the node in the rGeometry. |
StartIndex | The start Index of the constraints which are to be added. |
rConstraintIdVector | The vector of the constraints Ids which is accessed with StartIndex. |
rMsContainer | The Constraint container to which the contraints are added. |
|
protectedvirtual |
Applies the continuity between the boundary modelpart and the background.
rBoundaryModelPart | The boundary modelpart for which the continuity is to be enforced. |
pBinLocator | The 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 >.
|
protected |
Creates a vector of unique constraint ids based on how many required and how many are already present in the mrModelPart.
rIdVector | The vector which is populated with unique constraint ids. |
NumberOfConstraintsRequired | The number of further constraints required. used for calculation of unique ids. |
|
protectedvirtual |
Does a loop on the background and patch combinations possible and uses FormulateChimera method.
|
overridevirtual |
This function will be executed at every time step AFTER performing the solve phase.
Reimplemented from Kratos::Process.
Reimplemented in Kratos::ApplyChimeraProcessFractionalStep< TDim >.
|
overridevirtual |
This function will be executed at every time step BEFORE performing the solve phase.
Reimplemented from Kratos::Process.
|
protectedvirtual |
Formulates the Chimera conditions with a given set of background and patch combination.
BackgroundParam | Parameters/Settings for the background |
PatchParameters | Parameters/Settings for the Patch |
DomainType | Flag specifying if the background is the main bg or not |
|
protected |
Loops over the nodes of the given modelpart and uses the binlocater to locate them on a element and formulates respective constraints.
rBoundaryModelPart | The modelpart whose nodes are to be found. |
rBinLocator | The bin based locator formulated on the background. This is used to locate nodes on rBoundaryModelPart. |
rVelocityMasterSlaveContainerVector | the vector of velocity constraints vectors (one for each thread) |
rPressureMasterSlaveContainerVector | the vector of pressure constraints vectors (one for each thread) |
|
overridevirtual |
Turn back information as a string.
Reimplemented from Kratos::Process.
Reimplemented in Kratos::ApplyChimeraProcessMonolithic< TDim >, and Kratos::ApplyChimeraProcessFractionalStep< TDim >.
Kratos::ApplyChimera< TDim >::KRATOS_CLASS_POINTER_DEFINITION | ( | ApplyChimera< TDim > | ) |
|
overridevirtual |
Print object's data.
Reimplemented from Kratos::Process.
Reimplemented in Kratos::ApplyChimeraProcessMonolithic< TDim >, and Kratos::ApplyChimeraProcessFractionalStep< TDim >.
|
overridevirtual |
Print information about this object.
Reimplemented from Kratos::Process.
Reimplemented in Kratos::ApplyChimeraProcessMonolithic< TDim >, and Kratos::ApplyChimeraProcessFractionalStep< TDim >.
|
protected |
Given a node, this funcition finds and deletes all the existing constraints for that node.
rBoundaryNode | The boundary node for which the connections are to be made. |
|
protected |
This function reserves the necessary memory for the contraints in each thread.
rModelPart | The modelpart to which the constraints are to be added. |
rContainerVector | The container vector which has constraints to transfer |
void Kratos::ApplyChimera< TDim >::SetEchoLevel | ( | int | EchoLevel | ) |
void Kratos::ApplyChimera< TDim >::SetReformulateEveryStep | ( | bool | Reformulate | ) |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |