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::CalculateDistanceToSkinProcess< TDim > Class Template Reference

Calculates the nodal distances using elemental discontinuous distances. More...

#include <calculate_distance_to_skin_process.h>

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

Public Member Functions

Life Cycle
 CalculateDistanceToSkinProcess (ModelPart &rVolumePart, ModelPart &rSkinPart)
 Construct a new Calculate Distance To Skin Process object Constructor without user defined extra rays epsilon, used to generate the extra rays when voting is required for coloring. More...
 
 CalculateDistanceToSkinProcess (ModelPart &rVolumePart, ModelPart &rSkinPart, const double RayCastingRelativeTolerance)
 Construct a new Calculate Distance To Skin Process object Constructor with user defined extra rays epsilon, used to generate the extra rays when voting is required for coloring. More...
 
 CalculateDistanceToSkinProcess (ModelPart &rVolumePart, ModelPart &rSkinPart, Parameters rParameters)
 Construct a new Calculate Distance To Skin Process object using a parameter object. More...
 
 ~CalculateDistanceToSkinProcess () override
 Destructor. More...
 
Deleted
 CalculateDistanceToSkinProcess ()=delete
 Default constructor. More...
 
 CalculateDistanceToSkinProcess (CalculateDistanceToSkinProcess const &rOther)=delete
 Copy constructor. More...
 
CalculateDistanceToSkinProcessoperator= (CalculateDistanceToSkinProcess const &rOther)=delete
 Assignment operator. More...
 
Operations
void Initialize () override
 Initialize method This method calls the base discontinuous distance process initialize method and the method that initializes the nodal (continuous) distance values. More...
 
void CalculateDistances (std::vector< PointerVector< GeometricalObject >> &rIntersectedObjects) override
 Computes the nodal (continuous) distance field This method firstly computes the elemental distances, getting the minimum absolute value between the neighbouring elements for each node. Finally, a raycasting operation is performed to distingish between positive and negative distance values thanks to the obtained signed ray distance. More...
 
void CalculateElementalDistances (std::vector< PointerVector< GeometricalObject >> &rIntersectedObjects)
 Computes the discontinuous elemental distance This method firstly computes the elemental distances. The base discontinuous distance class is not used in this case since a naive elemental distance (avoiding the complexities implemented in the base class) is enough to serve as base to compute the continuous distance field. More...
 
double CalculateDistanceToNode (Node &rNode, PointerVector< GeometricalObject > &rIntersectedObjects, const double Epsilon)
 Calculate the nodal distance for a given node Given a list of the objects intersecting an element, this method computes the minimum distance for a given node of such element. This is done by computing the point-triangle (3D) or the point-line (2D) distance. More...
 
virtual void InitializeNodalDistances ()
 Initialize the nodal distance values This method initializes the nodal (continuous) distance values to a maximum positive value. More...
 
virtual void CalculateNodalDistances (NodeScalarGetFunctionType &rGetDistanceFunction)
 Translates the minimum elemental distance values to the nodes For each element, this method takes each node elemental distance value and checks if the already saved nodal value is greater. If it is, it saves the current elemental (discontinuous) value in the node. At the end, the minimum elemental distance value between the neighbour elements is saved at each node. More...
 
virtual void CalculateRayDistances ()
 Compute the raycasting distances and checks inside/outside This method computes the nodal raycasting distances and signs the continuous distance field by means of the raycasting procedure. More...
 
const Parameters GetDefaultParameters () const override
 Obtain the default parameters to construct the class. More...
 
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::CalculateDiscontinuousDistanceToSkinProcess< 3 >
 KRATOS_CLASS_POINTER_DEFINITION (CalculateDiscontinuousDistanceToSkinProcess)
 Pointer definition of CalculateDiscontinuousDistanceToSkinProcess. More...
 
 CalculateDiscontinuousDistanceToSkinProcess (ModelPart &rVolumePart, ModelPart &rSkinPart)
 Constructor to be used. More...
 
 CalculateDiscontinuousDistanceToSkinProcess (ModelPart &rVolumePart, ModelPart &rSkinPart, const Flags rOptions)
 Constructor with option. More...
 
 CalculateDiscontinuousDistanceToSkinProcess (ModelPart &rVolumePart, ModelPart &rSkinPart, Parameters rParameters)
 Constructor with parameters. More...
 
 ~CalculateDiscontinuousDistanceToSkinProcess () override
 Destructor. More...
 
virtual void FindIntersections ()
 Calls the FindIntersectedObjectsProcess to find the intersections This method calls the FindIntersectedObjectsProcess FindIntersections method. More...
 
virtual std::vector< PointerVector< GeometricalObject > > & GetIntersections ()
 Get the array containing the intersecting objects This method returns an array containing pointers to the intersecting geometries. More...
 
void Clear () override
 Calls the FindIntersectedObjects Clear() method This method calls the FindIntersectedObjects Clear() to empty the intersecting objects geometries array. More...
 
void Execute () override
 Executes the CalculateDiscontinuousDistanceToSkinProcess This method automatically does all the calls required to compute the discontinuous distance function. More...
 
void CalculateEmbeddedVariableFromSkin (const Variable< double > &rVariable, const Variable< double > &rEmbeddedVariable)
 Calculate embedded variable from skin double specialization This method calls the specialization method for two double variables. More...
 
void CalculateEmbeddedVariableFromSkin (const Variable< array_1d< double, 3 >> &rVariable, const Variable< array_1d< double, 3 >> &rEmbeddedVariable)
 Calculate embedded variable from skin array specialization This method calls the specialization method for two double variables. More...
 
const Parameters GetDefaultParameters () const override
 Obtain the default parameters to construct the class. More...
 
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...
 
 CalculateDiscontinuousDistanceToSkinProcess ()=delete
 Default constructor. More...
 
 CalculateDiscontinuousDistanceToSkinProcess (CalculateDiscontinuousDistanceToSkinProcess const &rOther)=delete
 Copy constructor. More...
 
CalculateDiscontinuousDistanceToSkinProcessoperator= (CalculateDiscontinuousDistanceToSkinProcess const &rOther)=delete
 Assignment operator. 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 int Check ()
 This function is designed for being called after ExecuteInitialize ONCE to verify that the input is correct. 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...
 

Type Definitions

using NodeType = ModelPart::NodeType
 
using IntersectionGeometryType = typename ApplyRayCastingProcess< TDim >::IntersectionGeometryType
 Types from the ApplyRayCastingProcess. More...
 
using IntersectionsContainerType = typename ApplyRayCastingProcess< TDim >::IntersectionsContainerType
 
using NodeScalarGetFunctionType = typename ApplyRayCastingProcess< TDim >::NodeScalarGetFunctionType
 
 KRATOS_CLASS_POINTER_DEFINITION (CalculateDistanceToSkinProcess)
 Pointer definition of CalculateDistanceToSkinProcess. More...
 

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)
 
- Public Attributes inherited from Kratos::CalculateDiscontinuousDistanceToSkinProcess< 3 >
FindIntersectedGeometricalObjectsProcess mFindIntersectedObjectsProcess
 
- Protected Member Functions inherited from Kratos::CalculateDiscontinuousDistanceToSkinProcess< 3 >
Plane3D SetIntersectionPlane (const std::vector< array_1d< double, 3 >> &rIntPtsVector)
 
Plane3D SetIntersectionPlane (const std::vector< array_1d< double, 3 >> &rIntPtsVector)
 
Plane3D SetIntersectionPlane (const std::vector< array_1d< double, 3 >> &rIntPtsVector)
 Set the Intersection Plane object This method returns the plane that defines the element intersection. The 2D case is considered to be a simplification of the 3D one, so a "fake" extra point is created by extruding the first point in the z-direction. More...
 
double CalculateCharacteristicLength ()
 Calculates the domain characteristic length This method computes the domain characteristic length as the norm of the diagonal vector that joins the maximum and minimum coordinates. More...
 
- Protected Attributes inherited from Kratos::CalculateDiscontinuousDistanceToSkinProcess< 3 >
const Variable< Vector > * mpElementalDistancesVariable
 

Detailed Description

template<std::size_t TDim = 3>
class Kratos::CalculateDistanceToSkinProcess< TDim >

Calculates the nodal distances using elemental discontinuous distances.

This class calculates the nodal distances as a minimum elemental distances connected to it.

Member Typedef Documentation

◆ IntersectionGeometryType

Types from the ApplyRayCastingProcess.

◆ IntersectionsContainerType

◆ NodeScalarGetFunctionType

◆ NodeType

template<std::size_t TDim = 3>
using Kratos::CalculateDistanceToSkinProcess< TDim >::NodeType = ModelPart::NodeType

Constructor & Destructor Documentation

◆ CalculateDistanceToSkinProcess() [1/5]

template<std::size_t TDim>
Kratos::CalculateDistanceToSkinProcess< TDim >::CalculateDistanceToSkinProcess ( ModelPart rVolumePart,
ModelPart rSkinPart 
)

Construct a new Calculate Distance To Skin Process object Constructor without user defined extra rays epsilon, used to generate the extra rays when voting is required for coloring.

Parameters
rVolumePartmodel part containing the volume elements
rSkinPartmodel part containing the skin to compute the distance to as conditions

◆ CalculateDistanceToSkinProcess() [2/5]

template<std::size_t TDim>
Kratos::CalculateDistanceToSkinProcess< TDim >::CalculateDistanceToSkinProcess ( ModelPart rVolumePart,
ModelPart rSkinPart,
const double  RayCastingRelativeTolerance 
)

Construct a new Calculate Distance To Skin Process object Constructor with user defined extra rays epsilon, used to generate the extra rays when voting is required for coloring.

Parameters
rVolumePartmodel part containing the volume elements
rSkinPartmodel part containing the skin to compute the distance to as conditions
RayCastingRelativeToleranceuser-defined tolerance for the apply_ray_casting_process

◆ CalculateDistanceToSkinProcess() [3/5]

template<std::size_t TDim>
Kratos::CalculateDistanceToSkinProcess< TDim >::CalculateDistanceToSkinProcess ( ModelPart rVolumePart,
ModelPart rSkinPart,
Parameters  rParameters 
)

Construct a new Calculate Distance To Skin Process object using a parameter object.

Parameters
rVolumePartmodel part containing the volume elements
rSkinPartmodel part containing the skin to compute the distance to as conditions
rParametersUser-defined parameters to construct the class

◆ ~CalculateDistanceToSkinProcess()

template<std::size_t TDim>
Kratos::CalculateDistanceToSkinProcess< TDim >::~CalculateDistanceToSkinProcess
override

Destructor.

◆ CalculateDistanceToSkinProcess() [4/5]

template<std::size_t TDim = 3>
Kratos::CalculateDistanceToSkinProcess< TDim >::CalculateDistanceToSkinProcess ( )
delete

Default constructor.

◆ CalculateDistanceToSkinProcess() [5/5]

template<std::size_t TDim = 3>
Kratos::CalculateDistanceToSkinProcess< TDim >::CalculateDistanceToSkinProcess ( CalculateDistanceToSkinProcess< TDim > const &  rOther)
delete

Copy constructor.

Member Function Documentation

◆ CalculateDistances()

template<std::size_t TDim>
void Kratos::CalculateDistanceToSkinProcess< TDim >::CalculateDistances ( std::vector< PointerVector< GeometricalObject >> &  rIntersectedObjects)
overridevirtual

Computes the nodal (continuous) distance field This method firstly computes the elemental distances, getting the minimum absolute value between the neighbouring elements for each node. Finally, a raycasting operation is performed to distingish between positive and negative distance values thanks to the obtained signed ray distance.

Parameters
rIntersectedObjectsarray containing pointers to the intersecting objects

Reimplemented from Kratos::CalculateDiscontinuousDistanceToSkinProcess< 3 >.

◆ CalculateDistanceToNode()

template<std::size_t TDim>
double Kratos::CalculateDistanceToSkinProcess< TDim >::CalculateDistanceToNode ( Node rNode,
PointerVector< GeometricalObject > &  rIntersectedObjects,
const double  Epsilon 
)

Calculate the nodal distance for a given node Given a list of the objects intersecting an element, this method computes the minimum distance for a given node of such element. This is done by computing the point-triangle (3D) or the point-line (2D) distance.

Parameters
rNodereference to the node of interest
rIntersectedObjectslist containing pointers to all the intersecting objects of an element
Epsilonzero distance threshold
Returns
double the nodal distance of the node of interest

◆ CalculateElementalDistances()

template<std::size_t TDim>
void Kratos::CalculateDistanceToSkinProcess< TDim >::CalculateElementalDistances ( std::vector< PointerVector< GeometricalObject >> &  rIntersectedObjects)

Computes the discontinuous elemental distance This method firstly computes the elemental distances. The base discontinuous distance class is not used in this case since a naive elemental distance (avoiding the complexities implemented in the base class) is enough to serve as base to compute the continuous distance field.

Parameters
rIntersectedObjectsarray containing pointers to the intersecting objects

◆ CalculateNodalDistances()

template<std::size_t TDim>
void Kratos::CalculateDistanceToSkinProcess< TDim >::CalculateNodalDistances ( NodeScalarGetFunctionType rGetDistanceFunction)
virtual

Translates the minimum elemental distance values to the nodes For each element, this method takes each node elemental distance value and checks if the already saved nodal value is greater. If it is, it saves the current elemental (discontinuous) value in the node. At the end, the minimum elemental distance value between the neighbour elements is saved at each node.

◆ CalculateRayDistances()

template<std::size_t TDim>
void Kratos::CalculateDistanceToSkinProcess< TDim >::CalculateRayDistances
virtual

Compute the raycasting distances and checks inside/outside This method computes the nodal raycasting distances and signs the continuous distance field by means of the raycasting procedure.

◆ GetDefaultParameters()

template<std::size_t TDim>
const Parameters Kratos::CalculateDistanceToSkinProcess< TDim >::GetDefaultParameters
overridevirtual

Obtain the default parameters to construct the class.

Reimplemented from Kratos::Process.

◆ Info()

template<std::size_t TDim>
std::string Kratos::CalculateDistanceToSkinProcess< TDim >::Info
overridevirtual

Turn back information as a string.

Reimplemented from Kratos::Flags.

◆ Initialize()

template<std::size_t TDim>
void Kratos::CalculateDistanceToSkinProcess< TDim >::Initialize
overridevirtual

Initialize method This method calls the base discontinuous distance process initialize method and the method that initializes the nodal (continuous) distance values.

Reimplemented from Kratos::CalculateDiscontinuousDistanceToSkinProcess< 3 >.

◆ InitializeNodalDistances()

template<std::size_t TDim>
void Kratos::CalculateDistanceToSkinProcess< TDim >::InitializeNodalDistances
virtual

Initialize the nodal distance values This method initializes the nodal (continuous) distance values to a maximum positive value.

◆ KRATOS_CLASS_POINTER_DEFINITION()

template<std::size_t TDim = 3>
Kratos::CalculateDistanceToSkinProcess< TDim >::KRATOS_CLASS_POINTER_DEFINITION ( CalculateDistanceToSkinProcess< TDim >  )

Pointer definition of CalculateDistanceToSkinProcess.

◆ operator=()

template<std::size_t TDim = 3>
CalculateDistanceToSkinProcess& Kratos::CalculateDistanceToSkinProcess< TDim >::operator= ( CalculateDistanceToSkinProcess< TDim > const &  rOther)
delete

Assignment operator.

◆ PrintData()

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

Print object's data.

Reimplemented from Kratos::Flags.

◆ PrintInfo()

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

Print information about this object.

Reimplemented from Kratos::Flags.


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