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::MultiscaleRefiningProcess Class Reference

This class provides a non conforming refinement to perform multi scale analysis @detail This process manages three model parts, the coarse model part, refined model part and the visualization model part. This process can be constructed again with the refined model part as the coarse model part in order to get several subscales levels. The refinement is executed by the UniformRefinementUtility where the nodal flag TO_REFINE is set to True. Then, the coarse elements are removed from the visualization model part and the refined elements are added to the visualization model part. The coarsening is executed by the UniformRefinementUtility where the nodal flag TO_REFINE is set to False. Then, the refined elements are deleted and the corresponding coarse elements are added again to the visualization model part. Flags used by the process: TO_REFINE : Those entities will be refined MeshingFlags::REFINED : Once they are refined MeshingFlags::TO_COARSEN : When they aren't TO_REFINE and they doesn't have dependencies TO_ERASE : auxiliary flag NEW_ENTITY : auxiliary flag INTERFACE : the boundary of the refined model part INSIDE : the refined nodes which are not boundary Variables used by the process: SUBSCALE_INDEX : is increased from the coarse model part to the refined one FATHER_NODES : the pointers to the coarse nodes FATHER_NODES_WEIGHTS : the weights of the father nodes SLAVE_NODE : a pointer to the refined node (matching nodes between coarse and refined model parts) FATHER_ELEMENT : the pointer to the coarse element FATHER_CONDITION : the pointer to the coarse condition. More...

#include <multiscale_refining_process.h>

Inheritance diagram for Kratos::MultiscaleRefiningProcess:
Collaboration diagram for Kratos::MultiscaleRefiningProcess:

Public Types

Type Definitions
typedef Node NodeType
 
typedef std::size_t IndexType
 
typedef std::vector< IndexTypeIndexVectorType
 
typedef std::vector< std::string > StringVectorType
 
typedef ModelPart::NodesContainerType NodesArrayType
 
typedef std::unordered_map< IndexType, IndexTypeIndexIndexMapType
 
typedef std::unordered_map< IndexType, std::vector< std::string > > IndexStringMapType
 
typedef std::unordered_map< IndexType, std::vector< IndexType > > IndexVectorMapType
 
- 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
 

Public Member Functions

Pointer Definitions

Pointer definition of MultiscaleRefiningProcess

 KRATOS_CLASS_POINTER_DEFINITION (MultiscaleRefiningProcess)
 
Life Cycle
 MultiscaleRefiningProcess (ModelPart &rThisCoarseModelPart, ModelPart &rThisRefinedModelPart, ModelPart &rThisVisualizationModelPart, Parameters ThisParameters=Parameters(R"({})"))
 
 ~MultiscaleRefiningProcess () override=default
 Destructor. More...
 
Operators
void operator() ()
 
Inquiry
ModelPartGetCoarseModelPart ()
 
ModelPartGetRefinedModelPart ()
 
ModelPartGetVisualizationModelPart ()
 
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::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 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 ExecuteInitializeSolutionStep ()
 This function will be executed at every time step BEFORE performing the solve phase. More...
 
virtual void ExecuteFinalizeSolutionStep ()
 This function will be executed at every time step AFTER performing the solve phase. 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 void Clear ()
 This method clears the assignation of the conditions. 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...
 

Operations

void Execute () override
 Execute method is used to execute the Process algorithms. More...
 
const Parameters GetDefaultParameters () const override
 This method provides the defaults parameters to avoid conflicts between the different constructors. More...
 
int Check () override
 Perform a check with the parameters. More...
 
void ExecuteRefinement ()
 
void ExecuteCoarsening ()
 
template<class TVarType >
void TransferLastStepToCoarseModelPart (const TVarType &rVariable)
 Copies all the last nodal step data from the refined model part to the coarse one. More...
 
template<class TVarType >
void TransferSubstepToRefinedInterface (const TVarType &rVariable, const double &rSubstepFraction)
 Copies the nodal step data with a linear interpolation between the last nodal steps of the given variable. More...
 
template<class TVarType >
void FixRefinedInterface (const TVarType &rVariable, bool IsFixed)
 Applies fixity forthe given variable at the nodes which define the interface. More...
 
static void InitializeVisualizationModelPart (ModelPart &rReferenceModelPart, ModelPart &rNewModelPart)
 InitializeVisualizationModelPart adds all the nodes, elements and conditions to the visualization model part. More...
 
static void InitializeRefinedModelPart (ModelPart &rReferenceModelPart, ModelPart &rNewModelPart)
 InitializeRefinedModelPart defines the refined model part @detail The method copy the model part hierarchy from the coarse to the refined model part. More...
 

Additional Inherited Members

- 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

This class provides a non conforming refinement to perform multi scale analysis @detail This process manages three model parts, the coarse model part, refined model part and the visualization model part. This process can be constructed again with the refined model part as the coarse model part in order to get several subscales levels. The refinement is executed by the UniformRefinementUtility where the nodal flag TO_REFINE is set to True. Then, the coarse elements are removed from the visualization model part and the refined elements are added to the visualization model part. The coarsening is executed by the UniformRefinementUtility where the nodal flag TO_REFINE is set to False. Then, the refined elements are deleted and the corresponding coarse elements are added again to the visualization model part. Flags used by the process: TO_REFINE : Those entities will be refined MeshingFlags::REFINED : Once they are refined MeshingFlags::TO_COARSEN : When they aren't TO_REFINE and they doesn't have dependencies TO_ERASE : auxiliary flag NEW_ENTITY : auxiliary flag INTERFACE : the boundary of the refined model part INSIDE : the refined nodes which are not boundary Variables used by the process: SUBSCALE_INDEX : is increased from the coarse model part to the refined one FATHER_NODES : the pointers to the coarse nodes FATHER_NODES_WEIGHTS : the weights of the father nodes SLAVE_NODE : a pointer to the refined node (matching nodes between coarse and refined model parts) FATHER_ELEMENT : the pointer to the coarse element FATHER_CONDITION : the pointer to the coarse condition.

Author
Miguel Maso Sotomayor

Member Typedef Documentation

◆ IndexIndexMapType

◆ IndexStringMapType

typedef std::unordered_map<IndexType, std::vector<std::string> > Kratos::MultiscaleRefiningProcess::IndexStringMapType

◆ IndexType

Type of IDs

◆ IndexVectorMapType

◆ IndexVectorType

Vector of IndexType

◆ NodesArrayType

Node containers definition

◆ NodeType

Node type

◆ StringVectorType

typedef std::vector<std::string> Kratos::MultiscaleRefiningProcess::StringVectorType

Vector of strings type

Constructor & Destructor Documentation

◆ MultiscaleRefiningProcess()

Kratos::MultiscaleRefiningProcess::MultiscaleRefiningProcess ( ModelPart rThisCoarseModelPart,
ModelPart rThisRefinedModelPart,
ModelPart rThisVisualizationModelPart,
Parameters  ThisParameters = Parameters(R"({})") 
)

◆ ~MultiscaleRefiningProcess()

Kratos::MultiscaleRefiningProcess::~MultiscaleRefiningProcess ( )
overridedefault

Destructor.

Member Function Documentation

◆ Check()

int Kratos::MultiscaleRefiningProcess::Check ( )
overridevirtual

Perform a check with the parameters.

Reimplemented from Kratos::Process.

◆ Execute()

void Kratos::MultiscaleRefiningProcess::Execute ( )
inlineoverridevirtual

Execute method is used to execute the Process algorithms.

Reimplemented from Kratos::Process.

◆ ExecuteCoarsening()

void Kratos::MultiscaleRefiningProcess::ExecuteCoarsening ( )

ExecuteCoarsening deletes the entities of the refined model part which in the coarse model part are not TO_REFINE

◆ ExecuteRefinement()

void Kratos::MultiscaleRefiningProcess::ExecuteRefinement ( )

ExecuteRefinement transfers the entities TO_REFINE from the coarse to the refined model part and executes the refinement

◆ FixRefinedInterface()

template<class TVarType >
void Kratos::MultiscaleRefiningProcess::FixRefinedInterface ( const TVarType &  rVariable,
bool  IsFixed 
)
inline

Applies fixity forthe given variable at the nodes which define the interface.

Template Parameters
TVarTypeThe variable type
Parameters
rVariableThe variable to apply fixity
IsFixed

◆ GetCoarseModelPart()

ModelPart& Kratos::MultiscaleRefiningProcess::GetCoarseModelPart ( )
inline

◆ GetDefaultParameters()

const Parameters Kratos::MultiscaleRefiningProcess::GetDefaultParameters ( ) const
overridevirtual

This method provides the defaults parameters to avoid conflicts between the different constructors.

Reimplemented from Kratos::Process.

◆ GetRefinedModelPart()

ModelPart& Kratos::MultiscaleRefiningProcess::GetRefinedModelPart ( )
inline

◆ GetVisualizationModelPart()

ModelPart& Kratos::MultiscaleRefiningProcess::GetVisualizationModelPart ( )
inline

◆ Info()

std::string Kratos::MultiscaleRefiningProcess::Info ( ) const
inlineoverridevirtual

Turn back information as a string.

Reimplemented from Kratos::Process.

◆ InitializeRefinedModelPart()

void Kratos::MultiscaleRefiningProcess::InitializeRefinedModelPart ( ModelPart rReferenceModelPart,
ModelPart rNewModelPart 
)
static

InitializeRefinedModelPart defines the refined model part @detail The method copy the model part hierarchy from the coarse to the refined model part.

Parameters
rReferenceModelPart
rNewModelPart

◆ InitializeVisualizationModelPart()

void Kratos::MultiscaleRefiningProcess::InitializeVisualizationModelPart ( ModelPart rReferenceModelPart,
ModelPart rNewModelPart 
)
static

InitializeVisualizationModelPart adds all the nodes, elements and conditions to the visualization model part.

Parameters
rReferenceModelPart
rNewModelPart

◆ KRATOS_CLASS_POINTER_DEFINITION()

Kratos::MultiscaleRefiningProcess::KRATOS_CLASS_POINTER_DEFINITION ( MultiscaleRefiningProcess  )

◆ operator()()

void Kratos::MultiscaleRefiningProcess::operator() ( )
inline

◆ PrintData()

void Kratos::MultiscaleRefiningProcess::PrintData ( std::ostream &  rOStream) const
inlineoverridevirtual

Print object's data.

Reimplemented from Kratos::Process.

◆ PrintInfo()

void Kratos::MultiscaleRefiningProcess::PrintInfo ( std::ostream &  rOStream) const
inlineoverridevirtual

Print information about this object.

Reimplemented from Kratos::Process.

◆ TransferLastStepToCoarseModelPart()

template<class TVarType >
void Kratos::MultiscaleRefiningProcess::TransferLastStepToCoarseModelPart ( const TVarType &  rVariable)
inline

Copies all the last nodal step data from the refined model part to the coarse one.

◆ TransferSubstepToRefinedInterface()

template<class TVarType >
void Kratos::MultiscaleRefiningProcess::TransferSubstepToRefinedInterface ( const TVarType &  rVariable,
const double rSubstepFraction 
)
inline

Copies the nodal step data with a linear interpolation between the last nodal steps of the given variable.

Template Parameters
TVarTypeThe variable type
Parameters
rVariableThe variable to transfer
rSubstepFraction0 means the previous time step, 1 means the last time step, an intermediate value means the interpolation factor

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