13 #if !defined(KRATOS_APPLY_RAY_CASTING_PROCESS_H_INCLUDED )
14 #define KRATOS_APPLY_RAY_CASTING_PROCESS_H_INCLUDED
36 template<std::
size_t TDim = 3>
99 const double RelativeTolerance);
122 const double RelativeTolerance,
136 mIsSearchStructureAllocated =
false;
149 const Parameters GetDefaultParameters()
const override;
159 virtual double DistancePositionInSpace(
const Node &rNode);
172 virtual void GetRayIntersections(
174 const unsigned int direction,
175 std::vector<std::pair<double,Element::GeometryType*> > &rIntersections);
189 virtual int GetCellIntersections(
193 const unsigned int direction,
194 std::vector<std::pair<double, Element::GeometryType*> > &rIntersections);
200 void Execute()
override;
207 std::string
Info()
const override;
210 void PrintInfo(std::ostream& rOStream)
const override;
213 void PrintData(std::ostream& rOStream)
const override;
256 const double* pRayPoint1,
257 const double* pRayPoint2,
258 double* pIntersectionPoint);
276 void CorrectExtraRayOrigin(
double* ExtraRayCoords);
286 void ComputeExtraRayColors(
296 void CalculateCharacteristicLength();
302 void SetRayCastingTolerances();
345 std::istream& rIStream,
350 std::ostream& rOStream,
354 rOStream << std::endl;
std::string Info() const override
Turn back information as a string.
Definition: periodic_interface_process.hpp:93
Applies ray casting to distinguish the color (like in/out) of each node in modelpart.
Definition: apply_ray_casting_process.h:38
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,...
FindIntersectedGeometricalObjectsProcess * mpFindIntersectedObjectsProcess
Definition: apply_ray_casting_process.h:229
NodeScalarGetFunctionType mDistanceGetterFunctor
Definition: apply_ray_casting_process.h:233
double mCharacteristicLength
Definition: apply_ray_casting_process.h:231
double mExtraRayOffset
Definition: apply_ray_casting_process.h:227
double mEpsilon
Definition: apply_ray_casting_process.h:226
std::function< void(NodeType &, const double)> ApplyNodalFunctorType
Definition: apply_ray_casting_process.h:68
void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
Definition: apply_ray_casting_process.cpp:526
double mRelativeTolerance
Definition: apply_ray_casting_process.h:228
Parameters mSettings
Definition: apply_ray_casting_process.h:225
ApplyRayCastingProcess(ApplyRayCastingProcess const &rOther)=delete
Copy constructor.
ApplyRayCastingProcess & operator=(ApplyRayCastingProcess const &rOther)=delete
Assignment operator.
KRATOS_CLASS_POINTER_DEFINITION(ApplyRayCastingProcess)
Pointer definition of ApplyRayCastingProcess.
void PrintData(std::ostream &rOStream) const override
Print object's data.
Definition: apply_ray_casting_process.cpp:533
bool mIsSearchStructureAllocated
Definition: apply_ray_casting_process.h:230
std::vector< std::pair< double, IntersectionGeometryType * > > IntersectionsContainerType
Definition: apply_ray_casting_process.h:64
DistanceDatabase
Nodal databases auxiliary enum.
Definition: apply_ray_casting_process.h:46
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 ...
std::function< double &(NodeType &rNode, const Variable< double > &rDistanceVariable)> NodeScalarGetFunctionType
Definition: apply_ray_casting_process.h:67
Base class for all Elements.
Definition: element.h:60
This class takes two modelparts and marks the intersected ones with SELECTED flag.
Definition: find_intersected_geometrical_objects_process.h:321
Geometry base class.
Definition: geometry.h:71
This class aims to manage meshes for multi-physics simulations.
Definition: model_part.h:77
This class defines the node.
Definition: node.h:65
This class represents a cell in an octree to be used with Octree class.
Definition: octree_binary_cell.h:70
CellType cell_type
Definition: octree_binary.h:68
cell_type::key_type key_type
Definition: octree_binary.h:70
This class provides to Kratos a data structure for I/O based on the standard of JSON.
Definition: kratos_parameters.h:59
The base class for all processes in Kratos.
Definition: process.h:49
Variable class contains all information needed to store and retrive data from a data container.
Definition: variable.h:63
#define KRATOS_REGISTRY_ADD_TEMPLATE_PROTOTYPE(NAME, X, Y,...)
Definition: define_registry.h:56
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
std::istream & operator>>(std::istream &rIStream, LinearMasterSlaveConstraint &rThis)
input stream function
namespace KRATOS_DEPRECATED_MESSAGE("Please use std::filesystem directly") filesystem
Definition: kratos_filesystem.h:33
std::ostream & operator<<(std::ostream &rOStream, const LinearMasterSlaveConstraint &rThis)
output stream function
Definition: linear_master_slave_constraint.h:432
tuple const
Definition: ode_solve.py:403
namespace
Definition: array_1d.h:793