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.
|
Applies ray casting to distinguish the color (like in/out) of each node in modelpart. More...
#include <apply_ray_casting_interface_recognition_process.h>
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... | |
ApplyRayCastingInterfaceRecognitionProcess & | operator= (ApplyRayCastingInterfaceRecognitionProcess const &rOther)=delete |
Assignment operator. More... | |
ApplyRayCastingInterfaceRecognitionProcess & | operator= (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... | |
ApplyRayCastingProcess & | operator= (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 | |
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 | |
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 |
FindIntersectedGeometricalObjectsProcess * | mpFindIntersectedObjectsProcess |
bool | mIsSearchStructureAllocated |
double | mCharacteristicLength |
const Variable< double > * | mpDistanceVariable |
NodeScalarGetFunctionType | mDistanceGetterFunctor |
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
using Kratos::ApplyRayCastingInterfaceRecognitionProcess< TDim >::BaseType = ApplyRayCastingProcess<TDim> |
|
default |
Default constructor, needed for registry.
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.
rVolumePart | model part containing the volume elements |
rSkinPart | model part containing the skin to compute the distance to as conditions |
Kratos::ApplyRayCastingInterfaceRecognitionProcess< TDim >::ApplyRayCastingInterfaceRecognitionProcess | ( | FindIntersectedGeometricalObjectsProcess & | TheFindIntersectedObjectsProcess, |
Parameters | ThisParameters = Parameters() |
||
) |
Construct a new Apply Ray Casting Process object using an already created search strucutre.
TheFindIntersectedObjectsProcess | reference to the already created search structure |
RelativeTolerance | user-defined relative tolerance to be multiplied by the domain bounding box size |
|
inlineoverride |
Destructor.
|
delete |
Copy constructor.
|
delete |
Move constructor.
|
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 >.
|
overridevirtual |
This method provides the defaults parameters to avoid conflicts between the different constructors.
Reimplemented from Kratos::Process.
Kratos::ApplyRayCastingInterfaceRecognitionProcess< TDim >::KRATOS_CLASS_POINTER_DEFINITION | ( | ApplyRayCastingInterfaceRecognitionProcess< TDim > | ) |
Pointer definition of ApplyRayCastingInterfaceRecognitionProcess.
|
delete |
|
delete |
Assignment operator.
|
inlineoverridevirtual |
Print object's data.
Reimplemented from Kratos::Flags.
|
inlineoverridevirtual |
Print information about this object.
Reimplemented from Kratos::Flags.