Skip to main content

Rocky Solver SDK 2025 R2

rocky_vicinity_pair_api

Last update: 16.07.2025
1// (C) 2024 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.
2#pragma once
3
4#include "rocky_boundary_api.hpp"
5#include "rocky_particle_api.hpp"
6
13{
19 ROCKY_FUNCTIONS IRockyParticle get_home_particle() const;
20
26 ROCKY_FUNCTIONS IRockyParticle get_near_particle() const;
27
33 ROCKY_FUNCTIONS IRockyGeometryTriangle get_near_triangle() const;
34
38 ROCKY_FUNCTIONS bool is_particle_particle() const;
39
43 ROCKY_FUNCTIONS bool is_particle_triangle() const;
44
48 ROCKY_FUNCTIONS double get_distance() const;
49
56 ROCKY_FUNCTIONS double get_squared_distance() const;
57
59 SDeviceModel* _model;
60 const size_t _home_id, _near_id;
61 bool _is_particle_particle;
63};
64
66{
67 return IRockyParticle { int(this->_home_id), this->_model };
68}
69
71{
72 return IRockyParticle { int(this->_near_id), this->_model };
73}
74
76{
77 return IRockyGeometryTriangle { int(this->_near_id), this->_model };
78}
79
80inline ROCKY_FUNCTIONS bool IRockyVicinityPair::is_particle_particle() const
81{
82 return this->_is_particle_particle;
83}
84
85inline ROCKY_FUNCTIONS bool IRockyVicinityPair::is_particle_triangle() const
86{
87 return !this->_is_particle_particle;
88}
89
90inline ROCKY_FUNCTIONS double IRockyVicinityPair::get_distance() const
91{
92 return sqrt(this->get_squared_distance());
93}
94
95inline ROCKY_FUNCTIONS double IRockyVicinityPair::get_squared_distance() const
96{
97 const auto home_position = this->_model->prt[this->_home_id].get_centroid();
98 const auto near_position = this->_is_particle_particle
99 ? this->_model->prt[this->_near_id].get_centroid()
100 : RockyBoundaryTriangle(this->_model, int(this->_near_id)).get_centroid();
101 return rocky::vector::dot(near_position - home_position);
102}
Definition rocky_boundary_api.hpp:146
Definition rocky_particle_api.hpp:28
Definition rocky_vicinity_pair_api.hpp:13
ROCKY_FUNCTIONS IRockyParticle get_near_particle() const
Definition rocky_vicinity_pair_api.hpp:70
ROCKY_FUNCTIONS double get_distance() const
Definition rocky_vicinity_pair_api.hpp:90
ROCKY_FUNCTIONS IRockyGeometryTriangle get_near_triangle() const
Definition rocky_vicinity_pair_api.hpp:75
ROCKY_FUNCTIONS bool is_particle_particle() const
Definition rocky_vicinity_pair_api.hpp:80
ROCKY_FUNCTIONS IRockyParticle get_home_particle() const
Definition rocky_vicinity_pair_api.hpp:65
ROCKY_FUNCTIONS double get_squared_distance() const
Definition rocky_vicinity_pair_api.hpp:95
ROCKY_FUNCTIONS bool is_particle_triangle() const
Definition rocky_vicinity_pair_api.hpp:85

Connect with Ansys