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

Applies ray casting to distinguish the color (like in/out) of each node in modelpart. More...

#include <apply_ray_casting_interface_recognition_process.h>

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

Public Member Functions

Type Definitions
 KRATOS_CLASS_POINTER_DEFINITION (ApplyRayCastingInterfaceRecognitionProcess)
 Pointer definition of ApplyRayCastingInterfaceRecognitionProcess. More...
 
Deleted
 ApplyRayCastingInterfaceRecognitionProcess (ApplyRayCastingInterfaceRecognitionProcess const &rOther)=delete
 Copy constructor. More...
 
 ApplyRayCastingInterfaceRecognitionProcess (ApplyRayCastingInterfaceRecognitionProcess &&rOther)=delete
 Move constructor. More...
 
ApplyRayCastingInterfaceRecognitionProcessoperator= (ApplyRayCastingInterfaceRecognitionProcess const &rOther)=delete
 Assignment operator. More...
 
ApplyRayCastingInterfaceRecognitionProcessoperator= (ApplyRayCastingInterfaceRecognitionProcess &&rOther)=delete
 
Operations
const Parameters GetDefaultParameters () const override
 This method provides the defaults parameters to avoid conflicts between the different constructors. 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::ApplyRayCastingProcess< TDim >
 ApplyRayCastingProcess (ModelPart &rVolumePart, ModelPart &rSkinPart, Parameters ThisParameters=Parameters())
 Construct a new ApplyRayCastingProcess object using volume and skin model parts Constructor without user defined extra rays epsilon, used to generate the extra rays when voting is required for coloring. More...
 
 ApplyRayCastingProcess (ModelPart &rVolumePart, ModelPart &rSkinPart, const double RelativeTolerance)
 Construct a new ApplyRayCastingProcess object using volume and skin model parts. More...
 
 ApplyRayCastingProcess (FindIntersectedGeometricalObjectsProcess &TheFindIntersectedObjectsProcess, Parameters ThisParameters=Parameters())
 Construct a new Apply Ray Casting Process object using an already created search strucutre. More...
 
 ApplyRayCastingProcess (FindIntersectedGeometricalObjectsProcess &TheFindIntersectedObjectsProcess, const double RelativeTolerance, const Variable< double > *pDistanceVariable, const DistanceDatabase &rDistanceDatabase)
 Construct a new Apply Ray Casting Process object using an already created search strucutre. More...
 
 ~ApplyRayCastingProcess () override
 Destructor. More...
 
 ApplyRayCastingProcess ()
 Default constructor, needed for registry. More...
 
 ApplyRayCastingProcess (ApplyRayCastingProcess const &rOther)=delete
 Copy constructor. More...
 
ApplyRayCastingProcessoperator= (ApplyRayCastingProcess const &rOther)=delete
 Assignment operator. More...
 
const Parameters GetDefaultParameters () const override
 This method provides the defaults parameters to avoid conflicts between the different constructors. More...
 
virtual double DistancePositionInSpace (const Node &rNode)
 Computes the raycasting distance for a node This method computes the raycasting distance for a given node. It casts a ray in the x and y (as well as z in 3D) directions and computes the distance from the ray origin point (the node of interest) to each one of the intersecting objects. More...
 
virtual void GetRayIntersections (const double *ray, const unsigned int direction, std::vector< std::pair< double, Element::GeometryType * > > &rIntersections)
 Get the ray intersecting objects and its distance For a given ray and direction, this method search for all the intersecting entities to this ray. This operation is performed using the binary octree in the discontinuous distance base class to check each one of the cells crossed by the ray. More...
 
virtual int GetCellIntersections (OctreeType::cell_type *cell, const double *ray, OctreeType::key_type *ray_key, const unsigned int direction, std::vector< std::pair< double, Element::GeometryType * > > &rIntersections)
 Get the intersecting objects contained in the current cell. More...
 
void Execute () override
 Executes the ApplyRayCastingProcess This method automatically does all the calls required to compute the signed distance function. 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...
 
 KRATOS_CLASS_POINTER_DEFINITION (ApplyRayCastingProcess)
 Pointer definition of ApplyRayCastingProcess. 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...
 
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...
 

Protected Member Functions

Protected Operations
std::function< void(Node &, const double)> CreateApplyNodalFunction () const override
 This method returns the function that will be applied to nodes depending on ray distance. In this class, we assign the correct sign to the distance depending on whether the node is inside or outside. If the node is on the interface we assign distance = 0.0. More...
 
- Protected Member Functions inherited from Kratos::ApplyRayCastingProcess< TDim >
int ComputeRayIntersection (Element::GeometryType &rGeometry, const double *pRayPoint1, const double *pRayPoint2, double *pIntersectionPoint)
 
int ComputeRayIntersection (Element::GeometryType &rGeometry, const double *pRayPoint1, const double *pRayPoint2, double *pIntersectionPoint)
 
void GetExtraRayOrigins (const array_1d< double, 3 > &rCoords, array_1d< array_1d< double, 3 >, 5 > &rExtraRayOrigs)
 
void GetExtraRayOrigins (const array_1d< double, 3 > &rCoords, array_1d< array_1d< double, 3 >, 9 > &rExtraRayOrigs)
 
int ComputeRayIntersection (Element::GeometryType &rGeometry, const double *pRayPoint1, const double *pRayPoint2, double *pIntersectionPoint)
 Checks if a ray intersects an intersecting geometry candidate For a given intersecting geometry, it checks if the ray intersects it. More...
 
void GetExtraRayOrigins (const array_1d< double, 3 > &rCoords, array_1d< array_1d< double, 3 >,(TDim==3) ? 9 :5 > &rExtraRayOrigs)
 Creates the start point in space for new extra rays around current ray This method is used to create extra rays when the original one hits border of a goemetry. More...
 
void CorrectExtraRayOrigin (double *ExtraRayCoords)
 Trims the extra rays to bounding box. More...
 
void ComputeExtraRayColors (const array_1d< double, 3 > &rCoords, array_1d< double, TDim > &rDistances)
 Creates extra rays around the current one and determine the color by voting When a ray hits border of a geometry this method is called to determine if the ray is penetrating the object or not. The idea is to lunch several rays around the original one and check the pentration by voting between them. More...
 
void CalculateCharacteristicLength ()
 Calculate the mCharacterisiticLength variable using bounding box of the domain to be used in scaling the epsilons The actual version calcuates the bonding box and takes the distance between max and min points as characteristic length. More...
 
void SetRayCastingTolerances ()
 Set the Ray Casting Tolerances values This method sets the ray casting tolerances values according to the domain bounding box size. More...
 
NodeScalarGetFunctionType CreateDistanceGetterFunctor () const
 This method returns the function to get the distance from a node. More...
 

Life Cycle

using BaseType = ApplyRayCastingProcess< TDim >
 
 ApplyRayCastingInterfaceRecognitionProcess ()=default
 Default constructor, needed for registry. More...
 
 ApplyRayCastingInterfaceRecognitionProcess (Model &rModel, Parameters ThisParameters)
 Construct a new ApplyRayCastingProcess object using model and paramterts. Constructor without user defined extra rays epsilon, used to generate the extra rays when voting is required for coloring. More...
 
 ApplyRayCastingInterfaceRecognitionProcess (FindIntersectedGeometricalObjectsProcess &TheFindIntersectedObjectsProcess, Parameters ThisParameters=Parameters())
 Construct a new Apply Ray Casting Process object using an already created search strucutre. More...
 
 ~ApplyRayCastingInterfaceRecognitionProcess () override
 Destructor. More...
 

Additional Inherited Members

- Public Types inherited from Kratos::ApplyRayCastingProcess< TDim >
enum class  DistanceDatabase
 Nodal databases auxiliary enum. More...
 
using ConfigurationType = Internals::DistanceSpatialContainersConfigure
 
using CellType = OctreeBinaryCell< ConfigurationType >
 
using OctreeType = OctreeBinary< CellType >
 
using CellNodeDataType = ConfigurationType::cell_node_data_type
 
typedef Element::GeometryType IntersectionGeometryType
 
typedef std::vector< std::pair< double, IntersectionGeometryType * > > IntersectionsContainerType
 
using NodeType = ModelPart::NodeType
 
using NodeScalarGetFunctionType = std::function< double &(NodeType &rNode, const Variable< double > &rDistanceVariable)>
 
using ApplyNodalFunctorType = std::function< void(NodeType &, const double)>
 
- 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)
 
- Protected Attributes inherited from Kratos::ApplyRayCastingProcess< TDim >
Parameters mSettings
 
double mEpsilon
 
double mExtraRayOffset
 
double mRelativeTolerance
 
FindIntersectedGeometricalObjectsProcessmpFindIntersectedObjectsProcess
 
bool mIsSearchStructureAllocated
 
double mCharacteristicLength
 
const Variable< double > * mpDistanceVariable
 
NodeScalarGetFunctionType mDistanceGetterFunctor
 

Detailed Description

template<std::size_t TDim>
class Kratos::ApplyRayCastingInterfaceRecognitionProcess< TDim >

Applies ray casting to distinguish the color (like in/out) of each node in modelpart.

This class is used to define the which nodes are inside, outside or on the interface of certain volume described by its contour

Member Typedef Documentation

◆ BaseType

template<std::size_t TDim>
using Kratos::ApplyRayCastingInterfaceRecognitionProcess< TDim >::BaseType = ApplyRayCastingProcess<TDim>

Constructor & Destructor Documentation

◆ ApplyRayCastingInterfaceRecognitionProcess() [1/5]

Default constructor, needed for registry.

◆ ApplyRayCastingInterfaceRecognitionProcess() [2/5]

template<std::size_t TDim>
Kratos::ApplyRayCastingInterfaceRecognitionProcess< TDim >::ApplyRayCastingInterfaceRecognitionProcess ( Model rModel,
Parameters  ThisParameters 
)

Construct a new ApplyRayCastingProcess object using model and paramterts. 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

◆ ApplyRayCastingInterfaceRecognitionProcess() [3/5]

template<std::size_t TDim>
Kratos::ApplyRayCastingInterfaceRecognitionProcess< TDim >::ApplyRayCastingInterfaceRecognitionProcess ( FindIntersectedGeometricalObjectsProcess TheFindIntersectedObjectsProcess,
Parameters  ThisParameters = Parameters() 
)

Construct a new Apply Ray Casting Process object using an already created search strucutre.

Parameters
TheFindIntersectedObjectsProcessreference to the already created search structure
RelativeToleranceuser-defined relative tolerance to be multiplied by the domain bounding box size

◆ ~ApplyRayCastingInterfaceRecognitionProcess()

Destructor.

◆ ApplyRayCastingInterfaceRecognitionProcess() [4/5]

Copy constructor.

◆ ApplyRayCastingInterfaceRecognitionProcess() [5/5]

Move constructor.

Member Function Documentation

◆ CreateApplyNodalFunction()

template<std::size_t TDim>
std::function< void(Node &, const double)> Kratos::ApplyRayCastingInterfaceRecognitionProcess< TDim >::CreateApplyNodalFunction
overrideprotectedvirtual

This method returns the function that will be applied to nodes depending on ray distance. In this class, we assign the correct sign to the distance depending on whether the node is inside or outside. If the node is on the interface we assign distance = 0.0.

Reimplemented from Kratos::ApplyRayCastingProcess< TDim >.

◆ GetDefaultParameters()

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

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

Reimplemented from Kratos::Process.

◆ KRATOS_CLASS_POINTER_DEFINITION()

template<std::size_t TDim>
Kratos::ApplyRayCastingInterfaceRecognitionProcess< TDim >::KRATOS_CLASS_POINTER_DEFINITION ( ApplyRayCastingInterfaceRecognitionProcess< TDim >  )

◆ operator=() [1/2]

◆ operator=() [2/2]

Assignment operator.

◆ PrintData()

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

Print object's data.

Reimplemented from Kratos::Flags.

◆ PrintInfo()

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

Print information about this object.

Reimplemented from Kratos::Flags.


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