Skip to main content

Rocky Solver SDK 2024 R2

rocky_vicinity_pair_api

Last update: 17.07.2025
1#pragma once
2
3#include "rocky_boundary_api.hpp"
4#include "rocky_particle_api.hpp"
5
12{
18 ROCKY_FUNCTIONS IRockyParticle get_home_particle() const;
19
25 ROCKY_FUNCTIONS IRockyParticle get_near_particle() const;
26
32 ROCKY_FUNCTIONS IRockyGeometryTriangle get_near_triangle() const;
33
37 ROCKY_FUNCTIONS bool is_particle_particle() const;
38
42 ROCKY_FUNCTIONS bool is_particle_triangle() const;
43
47 ROCKY_FUNCTIONS double get_distance() const;
48
55 ROCKY_FUNCTIONS double get_squared_distance() const;
56
58 SDeviceModel* _model;
59 const size_t _home_id, _near_id;
60 bool _is_particle_particle;
62};
63
65{
66 return IRockyParticle { int(this->_home_id), this->_model };
67}
68
70{
71 return IRockyParticle { int(this->_near_id), this->_model };
72}
73
75{
76 return IRockyGeometryTriangle { int(this->_near_id), this->_model };
77}
78
79inline ROCKY_FUNCTIONS bool IRockyVicinityPair::is_particle_particle() const
80{
81 return this->_is_particle_particle;
82}
83
84inline ROCKY_FUNCTIONS bool IRockyVicinityPair::is_particle_triangle() const
85{
86 return !this->_is_particle_particle;
87}
88
89inline ROCKY_FUNCTIONS double IRockyVicinityPair::get_distance() const
90{
91 return sqrt(this->get_squared_distance());
92}
93
94inline ROCKY_FUNCTIONS double IRockyVicinityPair::get_squared_distance() const
95{
96 const auto home_position = this->_model->prt[this->_home_id].get_centroid();
97 const auto near_position = this->_is_particle_particle
98 ? this->_model->prt[this->_near_id].get_centroid()
99 : RockyBoundaryTriangle(this->_model, int(this->_near_id)).get_centroid();
100 return rocky::vector::dot(near_position - home_position);
101}
Definition rocky_boundary_api.hpp:134
Definition rocky_particle_api.hpp:27
Definition rocky_vicinity_pair_api.hpp:12
ROCKY_FUNCTIONS IRockyParticle get_near_particle() const
Definition rocky_vicinity_pair_api.hpp:69
ROCKY_FUNCTIONS double get_distance() const
Definition rocky_vicinity_pair_api.hpp:89
ROCKY_FUNCTIONS IRockyGeometryTriangle get_near_triangle() const
Definition rocky_vicinity_pair_api.hpp:74
ROCKY_FUNCTIONS bool is_particle_particle() const
Definition rocky_vicinity_pair_api.hpp:79
ROCKY_FUNCTIONS IRockyParticle get_home_particle() const
Definition rocky_vicinity_pair_api.hpp:64
ROCKY_FUNCTIONS double get_squared_distance() const
Definition rocky_vicinity_pair_api.hpp:94
ROCKY_FUNCTIONS bool is_particle_triangle() const
Definition rocky_vicinity_pair_api.hpp:84

Connect with Ansys