    

 ## On this page

  

 

 # rocky\_vicinity\_pair\_api

 Last update: 16.07.2025 

<a id="l00001" name="l00001"></a> 1// (C) 2024 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.

<a id="l00002" name="l00002"></a> 2\#pragma once

<a id="l00003" name="l00003"></a> 3 

<a id="l00004" name="l00004"></a> 4\#include "rocky\_boundary\_api.hpp"

<a id="l00005" name="l00005"></a> 5\#include "rocky\_particle\_api.hpp"

<a id="l00006" name="l00006"></a> 6 

<a id="l00012" name="l00012"></a>[ 12](structIRockyVicinityPair.xhtml)struct [IRockyVicinityPair](structIRockyVicinityPair.xhtml)

<a id="l00013" name="l00013"></a> 13{

<a id="l00019" name="l00019"></a> 19 ROCKY_FUNCTIONS [IRockyParticle](structIRockyParticle.xhtml) [get\_home\_particle](structIRockyVicinityPair.xhtml#a6453667273c56febeed7c2806fa4a516)() const;

<a id="l00020" name="l00020"></a> 20 

<a id="l00026" name="l00026"></a> 26 ROCKY_FUNCTIONS [IRockyParticle](structIRockyParticle.xhtml) [get\_near\_particle](structIRockyVicinityPair.xhtml#a1085098207fdb2d038dcf55d10c318e1)() const;

<a id="l00027" name="l00027"></a> 27 

<a id="l00033" name="l00033"></a> 33 ROCKY_FUNCTIONS [IRockyGeometryTriangle](structIRockyGeometryTriangle.xhtml) [get\_near\_triangle](structIRockyVicinityPair.xhtml#a3d83f2759c519cadcd1a4a4199be6bb1)() const;

<a id="l00034" name="l00034"></a> 34 

<a id="l00038" name="l00038"></a> 38 ROCKY_FUNCTIONS bool [is\_particle\_particle](structIRockyVicinityPair.xhtml#a4e8173adc82c91c5d26edd8b0100c2f3)() const;

<a id="l00039" name="l00039"></a> 39 

<a id="l00043" name="l00043"></a> 43 ROCKY_FUNCTIONS bool [is\_particle\_triangle](structIRockyVicinityPair.xhtml#ad5120c027dba90895cf9d05d99e54e7d)() const;

<a id="l00044" name="l00044"></a> 44 

<a id="l00048" name="l00048"></a> 48 ROCKY_FUNCTIONS double [get\_distance](structIRockyVicinityPair.xhtml#a34b7e627e2b53650ec7a6b230528ee6f)() const;

<a id="l00049" name="l00049"></a> 49 

<a id="l00056" name="l00056"></a> 56 ROCKY_FUNCTIONS double [get\_squared\_distance](structIRockyVicinityPair.xhtml#ac697ba9682008871b110a31c8be3a48b)() const;

<a id="l00057" name="l00057"></a> 57 

<a id="l00059" name="l00059"></a> 59 SDeviceModel* _model;

<a id="l00060" name="l00060"></a> 60 const size\_t _home_id, _near_id;

<a id="l00061" name="l00061"></a> 61 bool _is_particle_particle;

<a id="l00063" name="l00063"></a> 63};



<a id="l00064" name="l00064"></a> 64 

<a id="l00065" name="l00065"></a>[ 65](structIRockyVicinityPair.xhtml#a6453667273c56febeed7c2806fa4a516)inline ROCKY_FUNCTIONS [IRockyParticle](structIRockyParticle.xhtml) [IRockyVicinityPair::get\_home\_particle](structIRockyVicinityPair.xhtml#a6453667273c56febeed7c2806fa4a516)() const

<a id="l00066" name="l00066"></a> 66{

<a id="l00067" name="l00067"></a> 67 return [IRockyParticle](structIRockyParticle.xhtml) { int(this-&gt;_home_id), this-&gt;_model };

<a id="l00068" name="l00068"></a> 68}



<a id="l00069" name="l00069"></a> 69 

<a id="l00070" name="l00070"></a>[ 70](structIRockyVicinityPair.xhtml#a1085098207fdb2d038dcf55d10c318e1)inline ROCKY_FUNCTIONS [IRockyParticle](structIRockyParticle.xhtml) [IRockyVicinityPair::get\_near\_particle](structIRockyVicinityPair.xhtml#a1085098207fdb2d038dcf55d10c318e1)() const

<a id="l00071" name="l00071"></a> 71{

<a id="l00072" name="l00072"></a> 72 return [IRockyParticle](structIRockyParticle.xhtml) { int(this-&gt;_near_id), this-&gt;_model };

<a id="l00073" name="l00073"></a> 73}



<a id="l00074" name="l00074"></a> 74 

<a id="l00075" name="l00075"></a>[ 75](structIRockyVicinityPair.xhtml#a3d83f2759c519cadcd1a4a4199be6bb1)inline ROCKY_FUNCTIONS [IRockyGeometryTriangle](structIRockyGeometryTriangle.xhtml) [IRockyVicinityPair::get\_near\_triangle](structIRockyVicinityPair.xhtml#a3d83f2759c519cadcd1a4a4199be6bb1)() const

<a id="l00076" name="l00076"></a> 76{

<a id="l00077" name="l00077"></a> 77 return [IRockyGeometryTriangle](structIRockyGeometryTriangle.xhtml) { int(this-&gt;_near_id), this-&gt;_model };

<a id="l00078" name="l00078"></a> 78}



<a id="l00079" name="l00079"></a> 79 

<a id="l00080" name="l00080"></a>[ 80](structIRockyVicinityPair.xhtml#a4e8173adc82c91c5d26edd8b0100c2f3)inline ROCKY_FUNCTIONS bool [IRockyVicinityPair::is\_particle\_particle](structIRockyVicinityPair.xhtml#a4e8173adc82c91c5d26edd8b0100c2f3)() const

<a id="l00081" name="l00081"></a> 81{

<a id="l00082" name="l00082"></a> 82 return this-&gt;_is_particle_particle;

<a id="l00083" name="l00083"></a> 83}



<a id="l00084" name="l00084"></a> 84 

<a id="l00085" name="l00085"></a>[ 85](structIRockyVicinityPair.xhtml#ad5120c027dba90895cf9d05d99e54e7d)inline ROCKY_FUNCTIONS bool [IRockyVicinityPair::is\_particle\_triangle](structIRockyVicinityPair.xhtml#ad5120c027dba90895cf9d05d99e54e7d)() const

<a id="l00086" name="l00086"></a> 86{

<a id="l00087" name="l00087"></a> 87 return !this-&gt;_is_particle_particle;

<a id="l00088" name="l00088"></a> 88}



<a id="l00089" name="l00089"></a> 89 

<a id="l00090" name="l00090"></a>[ 90](structIRockyVicinityPair.xhtml#a34b7e627e2b53650ec7a6b230528ee6f)inline ROCKY_FUNCTIONS double [IRockyVicinityPair::get\_distance](structIRockyVicinityPair.xhtml#a34b7e627e2b53650ec7a6b230528ee6f)() const

<a id="l00091" name="l00091"></a> 91{

<a id="l00092" name="l00092"></a> 92 return sqrt(this-&gt;[get\_squared\_distance](structIRockyVicinityPair.xhtml#ac697ba9682008871b110a31c8be3a48b)());

<a id="l00093" name="l00093"></a> 93}



<a id="l00094" name="l00094"></a> 94 

<a id="l00095" name="l00095"></a>[ 95](structIRockyVicinityPair.xhtml#ac697ba9682008871b110a31c8be3a48b)inline ROCKY_FUNCTIONS double [IRockyVicinityPair::get\_squared\_distance](structIRockyVicinityPair.xhtml#ac697ba9682008871b110a31c8be3a48b)() const

<a id="l00096" name="l00096"></a> 96{

<a id="l00097" name="l00097"></a> 97 const auto home_position = this-&gt;_model-&gt;prt[this-&gt;_home_id].get_centroid();

<a id="l00098" name="l00098"></a> 98 const auto near_position = this-&gt;_is_particle_particle

<a id="l00099" name="l00099"></a> 99 ? this-&gt;_model-&gt;prt[this-&gt;_near_id].get_centroid()

<a id="l00100" name="l00100"></a> 100 : RockyBoundaryTriangle(this-&gt;_model, int(this-&gt;_near_id)).get_centroid();

<a id="l00101" name="l00101"></a> 101 return rocky::vector::dot(near_position - home_position);

<a id="l00102" name="l00102"></a> 102}



[IRockyGeometryTriangle](structIRockyGeometryTriangle.xhtml)

**Definition** rocky_boundary_api.hpp:146



[IRockyParticle](structIRockyParticle.xhtml)

**Definition** rocky_particle_api.hpp:28



[IRockyVicinityPair](structIRockyVicinityPair.xhtml)

**Definition** rocky_vicinity_pair_api.hpp:13



[IRockyVicinityPair::get\_near\_particle](structIRockyVicinityPair.xhtml#a1085098207fdb2d038dcf55d10c318e1)

ROCKY_FUNCTIONS IRockyParticle get_near_particle() const

**Definition** rocky_vicinity_pair_api.hpp:70



[IRockyVicinityPair::get\_distance](structIRockyVicinityPair.xhtml#a34b7e627e2b53650ec7a6b230528ee6f)

ROCKY_FUNCTIONS double get_distance() const

**Definition** rocky_vicinity_pair_api.hpp:90



[IRockyVicinityPair::get\_near\_triangle](structIRockyVicinityPair.xhtml#a3d83f2759c519cadcd1a4a4199be6bb1)

ROCKY_FUNCTIONS IRockyGeometryTriangle get_near_triangle() const

**Definition** rocky_vicinity_pair_api.hpp:75



[IRockyVicinityPair::is\_particle\_particle](structIRockyVicinityPair.xhtml#a4e8173adc82c91c5d26edd8b0100c2f3)

ROCKY_FUNCTIONS bool is_particle_particle() const

**Definition** rocky_vicinity_pair_api.hpp:80



[IRockyVicinityPair::get\_home\_particle](structIRockyVicinityPair.xhtml#a6453667273c56febeed7c2806fa4a516)

ROCKY_FUNCTIONS IRockyParticle get_home_particle() const

**Definition** rocky_vicinity_pair_api.hpp:65



[IRockyVicinityPair::get\_squared\_distance](structIRockyVicinityPair.xhtml#ac697ba9682008871b110a31c8be3a48b)

ROCKY_FUNCTIONS double get_squared_distance() const

**Definition** rocky_vicinity_pair_api.hpp:95



[IRockyVicinityPair::is\_particle\_triangle](structIRockyVicinityPair.xhtml#ad5120c027dba90895cf9d05d99e54e7d)

ROCKY_FUNCTIONS bool is_particle_triangle() const

**Definition** rocky_vicinity_pair_api.hpp:85