    

 ## On this page

  

 

 # rocky\_sph\_model\_api

 Last update: 17.07.2025 

<a id="l00001" name="l00001"></a> 1\#pragma once

<a id="l00002" name="l00002"></a> 2 

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

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

<a id="l00005" name="l00005"></a> 5\#include "rocky20/api/rocky\_point\_cloud\_api.hpp"

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

<a id="l00007" name="l00007"></a> 7\#include "rocky\_sph\_element\_scalars.hpp"

<a id="l00008" name="l00008"></a> 8\#include "rocky\_sph\_element\_api.hpp"

<a id="l00009" name="l00009"></a> 9\#include "rocky\_sph\_model.hpp"

<a id="l00010" name="l00010"></a> 10 

<a id="l00011" name="l00011"></a> 11// ================================================================================================

<a id="l00012" name="l00012"></a> 12// IRockySPHModel

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

<a id="l00014" name="l00014"></a> 14 

<a id="l00020" name="l00020"></a>[ 20](structIRockySPHModel.xhtml)struct [IRockySPHModel](structIRockySPHModel.xhtml)

<a id="l00021" name="l00021"></a> 21{

<a id="l00029" name="l00029"></a> 29 [IRockySPHElementScalarsModel](structIRockySPHElementScalarsModel.xhtml) [get\_sph\_element\_scalars](structIRockySPHModel.xhtml#a60758ee9b344fcc7c76b500c0ac8f1cc)() const;

<a id="l00030" name="l00030"></a> 30 

<a id="l00035" name="l00035"></a> 35 int [get\_number\_of\_sph\_elements](structIRockySPHModel.xhtml#a5a3c1e8c7b54f79f6803fb25799cbd6d)() const;

<a id="l00036" name="l00036"></a> 36 

<a id="l00041" name="l00041"></a> 41 int [get\_number\_of\_active\_sph\_elements](structIRockySPHModel.xhtml#a53aabea7b2fb880bf83924a036badac7)() const;

<a id="l00042" name="l00042"></a> 42 

<a id="l00047" name="l00047"></a> 47 int [get\_number\_of\_active\_free\_sph\_elements](structIRockySPHModel.xhtml#a5f6419ca48c0e300e03e6820934a1718)() const;

<a id="l00048" name="l00048"></a> 48 

<a id="l00054" name="l00054"></a> 54 int [get\_number\_of\_active\_linked\_sph\_elements](structIRockySPHModel.xhtml#a832524def72a3d2da3bd449d5fb74368)() const;

<a id="l00055" name="l00055"></a> 55 

<a id="l00063" name="l00063"></a> 63 ESPHKernelType [get\_kernel\_type](structIRockySPHModel.xhtml#a513d780295b0089e4d2814cc660f5c78)() const;

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

<a id="l00069" name="l00069"></a> 69 float [get\_initial\_element\_spacing](structIRockySPHModel.xhtml#a212b6dd01fb2421258372058df86ccd6)() const;

<a id="l00070" name="l00070"></a> 70 

<a id="l00076" name="l00076"></a> 76 float [get\_smoothing\_length](structIRockySPHModel.xhtml#a245fc38b2db35e544f3b78642f11aff7)() const;

<a id="l00077" name="l00077"></a> 77 

<a id="l00081" name="l00081"></a> 81 float [get\_element\_mass](structIRockySPHModel.xhtml#afafa8461838c8fa9ca237437c074facd)() const;

<a id="l00082" name="l00082"></a> 82 

<a id="l00086" name="l00086"></a> 86 ROCKY_FUNCTIONS float [get\_fluid\_viscosity](structIRockySPHModel.xhtml#aa34cbdb0bbe713f76a24718369445b90)() const;

<a id="l00087" name="l00087"></a> 87 

<a id="l00091" name="l00091"></a> 91 ROCKY_FUNCTIONS float [get\_fluid\_density](structIRockySPHModel.xhtml#a053a3b3c9bd14e5051f38a0024ab4536)() const;

<a id="l00092" name="l00092"></a> 92 

<a id="l00096" name="l00096"></a> 96 ROCKY_FUNCTIONS float [get\_fluid\_thermal\_conductivity](structIRockySPHModel.xhtml#ab09538e62b2731ab25ee664d6eb08319)() const;

<a id="l00097" name="l00097"></a> 97 

<a id="l00101" name="l00101"></a> 101 ROCKY_FUNCTIONS float [get\_fluid\_specific\_heat](structIRockySPHModel.xhtml#acaf7cc9d7b268d36a2f739cfc3c3f7ca)() const;

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

<a id="l00106" name="l00106"></a> 106 ROCKY_FUNCTIONS float [get\_speed\_of\_sound](structIRockySPHModel.xhtml#a223390925c0c7a8d4c0a8ceaef043fe4)() const;

<a id="l00107" name="l00107"></a> 107 

<a id="l00111" name="l00111"></a> 111 ROCKY_FUNCTIONS float [get\_surface\_tension](structIRockySPHModel.xhtml#adae7b4a0340c884eb80e14d54a1b22f5)() const;

<a id="l00112" name="l00112"></a> 112 

<a id="l00116" name="l00116"></a> 116 bool [is\_enabled](structIRockySPHModel.xhtml#ab104c8f250896d3528cbe2eb045b4c69)() const;

<a id="l00117" name="l00117"></a> 117 

<a id="l00120" name="l00120"></a> 120 ROCKY_FUNCTIONS [IRockySPHModel](structIRockySPHModel.xhtml)(SPHModel* impl, const std::vector&lt;int&gt;&amp; device_ids);

<a id="l00121" name="l00121"></a> 121 

<a id="l00122" name="l00122"></a> 122 SPHModel* _impl;

<a id="l00123" name="l00123"></a> 123 const std::vector&lt;int&gt;&amp; _device_ids;

<a id="l00124" name="l00124"></a> 124 

<a id="l00126" name="l00126"></a> 126};



<a id="l00127" name="l00127"></a> 127 

<a id="l00128" name="l00128"></a> 128inline ROCKY_FUNCTIONS IRockySPHModel::IRockySPHModel(

<a id="l00129" name="l00129"></a> 129 SPHModel* impl, const std::vector&lt;int&gt;&amp; device_ids)

<a id="l00130" name="l00130"></a> 130 : _impl(impl)

<a id="l00131" name="l00131"></a> 131 , _device_ids(device_ids)

<a id="l00132" name="l00132"></a> 132{

<a id="l00133" name="l00133"></a> 133}

<a id="l00134" name="l00134"></a> 134 

<a id="l00135" name="l00135"></a> 135// ================================================================================================

<a id="l00136" name="l00136"></a> 136// IRockySPHDeviceModel

<a id="l00137" name="l00137"></a> 137// ================================================================================================

<a id="l00138" name="l00138"></a> 138 

<a id="l00145" name="l00145"></a>[ 145](structIRockySPHDeviceModel.xhtml)struct [IRockySPHDeviceModel](structIRockySPHDeviceModel.xhtml)

<a id="l00146" name="l00146"></a> 146{

<a id="l00150" name="l00150"></a> 150 ROCKY_FUNCTIONS float [get\_sph\_timestep](structIRockySPHDeviceModel.xhtml#a1b3b0ad0b9b4e4f723fed8cd6d859ff1)() const;

<a id="l00151" name="l00151"></a> 151 

<a id="l00155" name="l00155"></a> 155 ROCKY_FUNCTIONS float [get\_element\_mass](structIRockySPHDeviceModel.xhtml#a2e07d8b951637326aa17c3869fa75f6f)() const;

<a id="l00156" name="l00156"></a> 156 

<a id="l00161" name="l00161"></a> 161 ROCKY_FUNCTIONS float [get\_initial\_element\_spacing](structIRockySPHDeviceModel.xhtml#aa0dda18957c28775ae86803575275db2)() const;

<a id="l00162" name="l00162"></a> 162 

<a id="l00170" name="l00170"></a> 170 ROCKY_FUNCTIONS ESPHKernelType [get\_kernel\_type](structIRockySPHDeviceModel.xhtml#a1c804b61e8d38f22cc1df2960b94e5e5)() const;

<a id="l00171" name="l00171"></a> 171 

<a id="l00179" name="l00179"></a> 179 ROCKY_FUNCTIONS float [get\_kernel\_weight](structIRockySPHDeviceModel.xhtml#ac0f6dab31e47087f957b9c5f921044ca)(float distance) const;

<a id="l00180" name="l00180"></a> 180 

<a id="l00188" name="l00188"></a> 188 ROCKY_FUNCTIONS float [get\_kernel\_derivative](structIRockySPHDeviceModel.xhtml#a878401756bbf4517bd2dbf7c0b6f53b5)(float distance) const;

<a id="l00189" name="l00189"></a> 189 

<a id="l00195" name="l00195"></a> 195 ROCKY_FUNCTIONS float [get\_smoothing\_length](structIRockySPHDeviceModel.xhtml#a08276af5f02f29358b677c6c5c4eb623)() const;

<a id="l00196" name="l00196"></a> 196 

<a id="l00201" name="l00201"></a> 201 ROCKY_FUNCTIONS float [get\_minimum\_distance](structIRockySPHDeviceModel.xhtml#a11adf37fd1989526607c500a68f5a190)() const;

<a id="l00202" name="l00202"></a> 202 

<a id="l00207" name="l00207"></a> 207 ROCKY_FUNCTIONS float [get\_minimum\_distance\_squared](structIRockySPHDeviceModel.xhtml#a02751c7624b5eebe898fd497fd368f7e)() const;

<a id="l00208" name="l00208"></a> 208 

<a id="l00212" name="l00212"></a> 212 ROCKY_FUNCTIONS float [get\_fluid\_viscosity](structIRockySPHDeviceModel.xhtml#a0e7d219d00a03afa23f4340f966f274f)() const;

<a id="l00213" name="l00213"></a> 213 

<a id="l00217" name="l00217"></a> 217 ROCKY_FUNCTIONS float [get\_fluid\_density](structIRockySPHDeviceModel.xhtml#a30c701000a588378110aa2a163a07847)() const;

<a id="l00218" name="l00218"></a> 218 

<a id="l00222" name="l00222"></a> 222 ROCKY_FUNCTIONS float [get\_fluid\_thermal\_conductivity](structIRockySPHDeviceModel.xhtml#a53bf5a5c5dc38bed487a0ff75b4f881e)() const;

<a id="l00223" name="l00223"></a> 223 

<a id="l00227" name="l00227"></a> 227 ROCKY_FUNCTIONS float [get\_fluid\_specific\_heat](structIRockySPHDeviceModel.xhtml#a3f511dafb251e18d7dfc8a8f7c9cfcf1)() const;

<a id="l00228" name="l00228"></a> 228 

<a id="l00234" name="l00234"></a> 234 ROCKY_FUNCTIONS float [get\_turbulent\_prandtl\_number](structIRockySPHDeviceModel.xhtml#a085435fa6f49074b90d50686b5b6dd6c)() const;

<a id="l00235" name="l00235"></a> 235 

<a id="l00239" name="l00239"></a> 239 ROCKY_FUNCTIONS float [get\_speed\_of\_sound](structIRockySPHDeviceModel.xhtml#a53367cb9b7f97cb102cb9e1703a95131)() const;

<a id="l00240" name="l00240"></a> 240 

<a id="l00244" name="l00244"></a> 244 ROCKY_FUNCTIONS float [get\_surface\_tension](structIRockySPHDeviceModel.xhtml#ad52e0f31256e039c7043a7de165fadf7)() const;

<a id="l00245" name="l00245"></a> 245 

<a id="l00250" name="l00250"></a> 250 ROCKY_FUNCTIONS float [get\_stiffness](structIRockySPHDeviceModel.xhtml#aa0fa9e6fb5e51db54a99a4bc45949409)() const;

<a id="l00251" name="l00251"></a> 251 

<a id="l00256" name="l00256"></a> 256 ROCKY_FUNCTIONS float [get\_damping\_coefficient](structIRockySPHDeviceModel.xhtml#a7a1b280f7d23137f75cafb3eb29cf2bd)() const;

<a id="l00257" name="l00257"></a> 257 

<a id="l00268" name="l00268"></a> 268 ROCKY_FUNCTIONS ESPHBoundaryType [get\_boundary\_condition\_type](structIRockySPHDeviceModel.xhtml#a9a4ab5e39105ea7398fb0b3b15b2763c) (int geometry_index) const;

<a id="l00269" name="l00269"></a> 269 

<a id="l00280" name="l00280"></a> 280 ROCKY_FUNCTIONS float [get\_wall\_turbulent\_thermal\_conductance](structIRockySPHDeviceModel.xhtml#a98a93eadf944d6ad89416d384e1476c3)(

<a id="l00281" name="l00281"></a> 281 float velocity, float distance) const;

<a id="l00282" name="l00282"></a> 282 

<a id="l00298" name="l00298"></a> 298 ROCKY_FUNCTIONS [IRockyCloudPoint](structIRockyCloudPoint.xhtml)

<a id="l00299" name="l00299"></a> 299 [get\_element\_cloud\_point](structIRockySPHDeviceModel.xhtml#a707d2c43244e0a2db08047ba86dbfd78)(int point_cloud_index, const [IRockySPHElement](structIRockySPHElement.xhtml)&amp; element);

<a id="l00300" name="l00300"></a> 300 

<a id="l00304" name="l00304"></a> 304 ROCKY_FUNCTIONS bool [has\_turbulence\_modeling](structIRockySPHDeviceModel.xhtml#aeafb1df061969bc91b4912460cebedb5)() const;

<a id="l00305" name="l00305"></a> 305 

<a id="l00306" name="l00306"></a> 306 

<a id="l00309" name="l00309"></a> 309 [[deprecated("Use get\_element\_mass() instead.")]]

<a id="l00310" name="l00310"></a> 310 ROCKY_FUNCTIONS float get_mass() const;

<a id="l00311" name="l00311"></a> 311 

<a id="l00312" name="l00312"></a> 312 // (ROCKY - 15509) : candidates for removing from the API

<a id="l00313" name="l00313"></a> 313 // reason: they are model-specific parameters, they are not general

<a id="l00314" name="l00314"></a> 314 

<a id="l00315" name="l00315"></a> 315 ROCKY_FUNCTIONS float get_les_smagorinsky_constant() const;

<a id="l00316" name="l00316"></a> 316 

<a id="l00317" name="l00317"></a> 317 ROCKY_FUNCTIONS float get_les_distance_factor() const;

<a id="l00318" name="l00318"></a> 318 

<a id="l00319" name="l00319"></a> 319 ROCKY_FUNCTIONS float get_stabilization_positive_factor() const;

<a id="l00320" name="l00320"></a> 320 

<a id="l00321" name="l00321"></a> 321 ROCKY_FUNCTIONS float get_stabilization_negative_factor() const;

<a id="l00322" name="l00322"></a> 322 

<a id="l00323" name="l00323"></a> 323 ROCKY_FUNCTIONS float get_stabilization_degree() const;

<a id="l00324" name="l00324"></a> 324 

<a id="l00325" name="l00325"></a> 325 ROCKY_FUNCTIONS float get_boundary_distance_normal_factor() const;

<a id="l00326" name="l00326"></a> 326 

<a id="l00327" name="l00327"></a> 327 ROCKY_FUNCTIONS float get_boundary_distance_tangential_factor() const;

<a id="l00328" name="l00328"></a> 328 

<a id="l00329" name="l00329"></a> 329 ROCKY_FUNCTIONS [IRockySPHDeviceModel](structIRockySPHDeviceModel.xhtml)(

<a id="l00330" name="l00330"></a> 330 SDeviceModel* model, cuda_general_sph* _gen_sph, SPHDeviceModel* _sph_model);

<a id="l00331" name="l00331"></a> 331 

<a id="l00332" name="l00332"></a> 332 RockySPHDeviceModel _impl;

<a id="l00333" name="l00333"></a> 333 SDeviceModel* device_model;

<a id="l00334" name="l00334"></a> 334 

<a id="l00336" name="l00336"></a> 336};



<a id="l00337" name="l00337"></a> 337 

<a id="l00338" name="l00338"></a> 338inline ROCKY_FUNCTIONS IRockySPHDeviceModel::IRockySPHDeviceModel(

<a id="l00339" name="l00339"></a> 339 SDeviceModel* model, cuda_general_sph* _gen_sph, SPHDeviceModel* _sph_model)

<a id="l00340" name="l00340"></a> 340 : device_model(model)

<a id="l00341" name="l00341"></a> 341 , _impl(_gen_sph, _sph_model)

<a id="l00342" name="l00342"></a> 342{

<a id="l00343" name="l00343"></a> 343}

<a id="l00344" name="l00344"></a> 344 

<a id="l00345" name="l00345"></a>[ 345](structIRockySPHDeviceModel.xhtml#a1c804b61e8d38f22cc1df2960b94e5e5)inline ROCKY_FUNCTIONS ESPHKernelType [IRockySPHDeviceModel::get\_kernel\_type](structIRockySPHDeviceModel.xhtml#a1c804b61e8d38f22cc1df2960b94e5e5)() const

<a id="l00346" name="l00346"></a> 346{

<a id="l00347" name="l00347"></a> 347 return this-&gt;_impl.get_kernel_type();

<a id="l00348" name="l00348"></a> 348}



<a id="l00349" name="l00349"></a> 349 

<a id="l00350" name="l00350"></a>[ 350](structIRockySPHDeviceModel.xhtml#a1b3b0ad0b9b4e4f723fed8cd6d859ff1)inline ROCKY_FUNCTIONS float [IRockySPHDeviceModel::get\_sph\_timestep](structIRockySPHDeviceModel.xhtml#a1b3b0ad0b9b4e4f723fed8cd6d859ff1)() const

<a id="l00351" name="l00351"></a> 351{

<a id="l00352" name="l00352"></a> 352 return this-&gt;_impl.get_timestep();

<a id="l00353" name="l00353"></a> 353}



<a id="l00354" name="l00354"></a> 354 

<a id="l00355" name="l00355"></a> 355inline ROCKY_FUNCTIONS float IRockySPHDeviceModel::get_mass() const

<a id="l00356" name="l00356"></a> 356{

<a id="l00357" name="l00357"></a> 357 return this-&gt;_impl.get_mass();

<a id="l00358" name="l00358"></a> 358}

<a id="l00359" name="l00359"></a> 359 

<a id="l00360" name="l00360"></a>[ 360](structIRockySPHDeviceModel.xhtml#a2e07d8b951637326aa17c3869fa75f6f)inline ROCKY_FUNCTIONS float [IRockySPHDeviceModel::get\_element\_mass](structIRockySPHDeviceModel.xhtml#a2e07d8b951637326aa17c3869fa75f6f)() const

<a id="l00361" name="l00361"></a> 361{

<a id="l00362" name="l00362"></a> 362 return this-&gt;_impl.get_mass();

<a id="l00363" name="l00363"></a> 363}



<a id="l00364" name="l00364"></a> 364 

<a id="l00365" name="l00365"></a>[ 365](structIRockySPHDeviceModel.xhtml#aa0dda18957c28775ae86803575275db2)inline ROCKY_FUNCTIONS float [IRockySPHDeviceModel::get\_initial\_element\_spacing](structIRockySPHDeviceModel.xhtml#aa0dda18957c28775ae86803575275db2)() const

<a id="l00366" name="l00366"></a> 366{

<a id="l00367" name="l00367"></a> 367 return this-&gt;_impl.get_general_size();

<a id="l00368" name="l00368"></a> 368}



<a id="l00369" name="l00369"></a> 369 

<a id="l00370" name="l00370"></a>[ 370](structIRockySPHDeviceModel.xhtml#ac0f6dab31e47087f957b9c5f921044ca)inline ROCKY_FUNCTIONS float [IRockySPHDeviceModel::get\_kernel\_weight](structIRockySPHDeviceModel.xhtml#ac0f6dab31e47087f957b9c5f921044ca)(float distance) const

<a id="l00371" name="l00371"></a> 371{

<a id="l00372" name="l00372"></a> 372 return this-&gt;_impl.get_kernel(distance);

<a id="l00373" name="l00373"></a> 373}



<a id="l00374" name="l00374"></a> 374 

<a id="l00375" name="l00375"></a>[ 375](structIRockySPHDeviceModel.xhtml#a878401756bbf4517bd2dbf7c0b6f53b5)inline ROCKY_FUNCTIONS float [IRockySPHDeviceModel::get\_kernel\_derivative](structIRockySPHDeviceModel.xhtml#a878401756bbf4517bd2dbf7c0b6f53b5)(float distance) const

<a id="l00376" name="l00376"></a> 376{

<a id="l00377" name="l00377"></a> 377 return this-&gt;_impl.get_kernel_derivative(distance);

<a id="l00378" name="l00378"></a> 378}



<a id="l00379" name="l00379"></a> 379 

<a id="l00380" name="l00380"></a>[ 380](structIRockySPHDeviceModel.xhtml#a08276af5f02f29358b677c6c5c4eb623)inline ROCKY_FUNCTIONS float [IRockySPHDeviceModel::get\_smoothing\_length](structIRockySPHDeviceModel.xhtml#a08276af5f02f29358b677c6c5c4eb623)() const

<a id="l00381" name="l00381"></a> 381{

<a id="l00382" name="l00382"></a> 382 return this-&gt;_impl.get_base_kernel();

<a id="l00383" name="l00383"></a> 383}



<a id="l00384" name="l00384"></a> 384 

<a id="l00385" name="l00385"></a>[ 385](structIRockySPHDeviceModel.xhtml#a11adf37fd1989526607c500a68f5a190)inline ROCKY_FUNCTIONS float [IRockySPHDeviceModel::get\_minimum\_distance](structIRockySPHDeviceModel.xhtml#a11adf37fd1989526607c500a68f5a190)() const

<a id="l00386" name="l00386"></a> 386{

<a id="l00387" name="l00387"></a> 387 return this-&gt;_impl.get_minimum_distance();

<a id="l00388" name="l00388"></a> 388}



<a id="l00389" name="l00389"></a> 389 

<a id="l00390" name="l00390"></a>[ 390](structIRockySPHDeviceModel.xhtml#a02751c7624b5eebe898fd497fd368f7e)inline ROCKY_FUNCTIONS float [IRockySPHDeviceModel::get\_minimum\_distance\_squared](structIRockySPHDeviceModel.xhtml#a02751c7624b5eebe898fd497fd368f7e)() const

<a id="l00391" name="l00391"></a> 391{

<a id="l00392" name="l00392"></a> 392 return this-&gt;_impl.get_minimum_distance_squared();

<a id="l00393" name="l00393"></a> 393}



<a id="l00394" name="l00394"></a> 394 

<a id="l00395" name="l00395"></a>[ 395](structIRockySPHDeviceModel.xhtml#a0e7d219d00a03afa23f4340f966f274f)inline ROCKY_FUNCTIONS float [IRockySPHDeviceModel::get\_fluid\_viscosity](structIRockySPHDeviceModel.xhtml#a0e7d219d00a03afa23f4340f966f274f)() const

<a id="l00396" name="l00396"></a> 396{

<a id="l00397" name="l00397"></a> 397 return this-&gt;_impl.get_general_viscosity();

<a id="l00398" name="l00398"></a> 398}



<a id="l00399" name="l00399"></a> 399 

<a id="l00400" name="l00400"></a>[ 400](structIRockySPHDeviceModel.xhtml#a30c701000a588378110aa2a163a07847)inline ROCKY_FUNCTIONS float [IRockySPHDeviceModel::get\_fluid\_density](structIRockySPHDeviceModel.xhtml#a30c701000a588378110aa2a163a07847)() const

<a id="l00401" name="l00401"></a> 401{

<a id="l00402" name="l00402"></a> 402 return this-&gt;_impl.get_general_density();

<a id="l00403" name="l00403"></a> 403}



<a id="l00404" name="l00404"></a> 404 

<a id="l00405" name="l00405"></a>[ 405](structIRockySPHDeviceModel.xhtml#a53bf5a5c5dc38bed487a0ff75b4f881e)inline ROCKY_FUNCTIONS float [IRockySPHDeviceModel::get\_fluid\_thermal\_conductivity](structIRockySPHDeviceModel.xhtml#a53bf5a5c5dc38bed487a0ff75b4f881e)() const

<a id="l00406" name="l00406"></a> 406{

<a id="l00407" name="l00407"></a> 407 return this-&gt;_impl.get_general_thermal_conductivity();

<a id="l00408" name="l00408"></a> 408}



<a id="l00409" name="l00409"></a> 409 

<a id="l00410" name="l00410"></a>[ 410](structIRockySPHDeviceModel.xhtml#a3f511dafb251e18d7dfc8a8f7c9cfcf1)inline ROCKY_FUNCTIONS float [IRockySPHDeviceModel::get\_fluid\_specific\_heat](structIRockySPHDeviceModel.xhtml#a3f511dafb251e18d7dfc8a8f7c9cfcf1)() const

<a id="l00411" name="l00411"></a> 411{

<a id="l00412" name="l00412"></a> 412 return this-&gt;_impl.get_general_specific_heat();

<a id="l00413" name="l00413"></a> 413}



<a id="l00414" name="l00414"></a> 414 

<a id="l00415" name="l00415"></a>[ 415](structIRockySPHDeviceModel.xhtml#a085435fa6f49074b90d50686b5b6dd6c)inline ROCKY_FUNCTIONS float [IRockySPHDeviceModel::get\_turbulent\_prandtl\_number](structIRockySPHDeviceModel.xhtml#a085435fa6f49074b90d50686b5b6dd6c)() const

<a id="l00416" name="l00416"></a> 416{

<a id="l00417" name="l00417"></a> 417 return this-&gt;_impl.get_turbulent_prandtl_number();

<a id="l00418" name="l00418"></a> 418}



<a id="l00419" name="l00419"></a> 419 

<a id="l00420" name="l00420"></a>[ 420](structIRockySPHDeviceModel.xhtml#a53367cb9b7f97cb102cb9e1703a95131)inline ROCKY_FUNCTIONS float [IRockySPHDeviceModel::get\_speed\_of\_sound](structIRockySPHDeviceModel.xhtml#a53367cb9b7f97cb102cb9e1703a95131)() const

<a id="l00421" name="l00421"></a> 421{

<a id="l00422" name="l00422"></a> 422 return this-&gt;_impl.get_speed_of_sound();

<a id="l00423" name="l00423"></a> 423}



<a id="l00424" name="l00424"></a> 424 

<a id="l00425" name="l00425"></a>[ 425](structIRockySPHDeviceModel.xhtml#ad52e0f31256e039c7043a7de165fadf7)inline ROCKY_FUNCTIONS float [IRockySPHDeviceModel::get\_surface\_tension](structIRockySPHDeviceModel.xhtml#ad52e0f31256e039c7043a7de165fadf7)() const

<a id="l00426" name="l00426"></a> 426{

<a id="l00427" name="l00427"></a> 427 return this-&gt;_impl.get_surface_tension();

<a id="l00428" name="l00428"></a> 428}



<a id="l00429" name="l00429"></a> 429 

<a id="l00430" name="l00430"></a>[ 430](structIRockySPHDeviceModel.xhtml#a7a1b280f7d23137f75cafb3eb29cf2bd)inline ROCKY_FUNCTIONS float [IRockySPHDeviceModel::get\_damping\_coefficient](structIRockySPHDeviceModel.xhtml#a7a1b280f7d23137f75cafb3eb29cf2bd)() const

<a id="l00431" name="l00431"></a> 431{

<a id="l00432" name="l00432"></a> 432 return this-&gt;_impl.get_damping_coefficient();

<a id="l00433" name="l00433"></a> 433}



<a id="l00434" name="l00434"></a> 434 

<a id="l00435" name="l00435"></a>[ 435](structIRockySPHDeviceModel.xhtml#aa0fa9e6fb5e51db54a99a4bc45949409)inline ROCKY_FUNCTIONS float [IRockySPHDeviceModel::get\_stiffness](structIRockySPHDeviceModel.xhtml#aa0fa9e6fb5e51db54a99a4bc45949409)() const

<a id="l00436" name="l00436"></a> 436{

<a id="l00437" name="l00437"></a> 437 return this-&gt;_impl.get_stiffness();

<a id="l00438" name="l00438"></a> 438}



<a id="l00439" name="l00439"></a> 439 

<a id="l00440" name="l00440"></a> 440inline ROCKY_FUNCTIONS float IRockySPHDeviceModel::get_les_smagorinsky_constant() const

<a id="l00441" name="l00441"></a> 441{

<a id="l00442" name="l00442"></a> 442 return this-&gt;_impl.get_les_smagorinsky_constant();

<a id="l00443" name="l00443"></a> 443}

<a id="l00444" name="l00444"></a> 444 

<a id="l00445" name="l00445"></a> 445inline ROCKY_FUNCTIONS float IRockySPHDeviceModel::get_les_distance_factor() const

<a id="l00446" name="l00446"></a> 446{

<a id="l00447" name="l00447"></a> 447 return this-&gt;_impl.get_les_distance_factor();

<a id="l00448" name="l00448"></a> 448}

<a id="l00449" name="l00449"></a> 449 

<a id="l00450" name="l00450"></a> 450inline ROCKY_FUNCTIONS float IRockySPHDeviceModel::get_stabilization_positive_factor() const

<a id="l00451" name="l00451"></a> 451{

<a id="l00452" name="l00452"></a> 452 return this-&gt;_impl.get_stabilization_positive_factor();

<a id="l00453" name="l00453"></a> 453}

<a id="l00454" name="l00454"></a> 454 

<a id="l00455" name="l00455"></a> 455inline ROCKY_FUNCTIONS float IRockySPHDeviceModel::get_stabilization_negative_factor() const

<a id="l00456" name="l00456"></a> 456{

<a id="l00457" name="l00457"></a> 457 return this-&gt;_impl.get_stabilization_negative_factor();

<a id="l00458" name="l00458"></a> 458}

<a id="l00459" name="l00459"></a> 459 

<a id="l00460" name="l00460"></a> 460inline ROCKY_FUNCTIONS float IRockySPHDeviceModel::get_stabilization_degree() const

<a id="l00461" name="l00461"></a> 461{

<a id="l00462" name="l00462"></a> 462 return this-&gt;_impl.get_stabilization_degree();

<a id="l00463" name="l00463"></a> 463}

<a id="l00464" name="l00464"></a> 464 

<a id="l00465" name="l00465"></a> 465inline ROCKY_FUNCTIONS float IRockySPHDeviceModel::get_boundary_distance_normal_factor() const

<a id="l00466" name="l00466"></a> 466{

<a id="l00467" name="l00467"></a> 467 return this-&gt;_impl.get_boundary_distance_normal_factor();

<a id="l00468" name="l00468"></a> 468}

<a id="l00469" name="l00469"></a> 469 

<a id="l00470" name="l00470"></a> 470inline ROCKY_FUNCTIONS float IRockySPHDeviceModel::get_boundary_distance_tangential_factor() const

<a id="l00471" name="l00471"></a> 471{

<a id="l00472" name="l00472"></a> 472 return this-&gt;_impl.get_boundary_distance_tangential_factor();

<a id="l00473" name="l00473"></a> 473}

<a id="l00474" name="l00474"></a> 474 

<a id="l00475" name="l00475"></a>[ 475](structIRockySPHDeviceModel.xhtml#a9a4ab5e39105ea7398fb0b3b15b2763c)inline ROCKY_FUNCTIONS ESPHBoundaryType [IRockySPHDeviceModel::get\_boundary\_condition\_type](structIRockySPHDeviceModel.xhtml#a9a4ab5e39105ea7398fb0b3b15b2763c)(int geometry_index) const

<a id="l00476" name="l00476"></a> 476{

<a id="l00477" name="l00477"></a> 477 return this-&gt;_impl.get_boundary_condition_type(geometry_index);

<a id="l00478" name="l00478"></a> 478}



<a id="l00479" name="l00479"></a> 479 

<a id="l00480" name="l00480"></a> 480//TODO Refinement

<a id="l00481" name="l00481"></a>[ 481](structIRockySPHDeviceModel.xhtml#a98a93eadf944d6ad89416d384e1476c3)inline ROCKY_FUNCTIONS float [IRockySPHDeviceModel::get\_wall\_turbulent\_thermal\_conductance](structIRockySPHDeviceModel.xhtml#a98a93eadf944d6ad89416d384e1476c3)(

<a id="l00482" name="l00482"></a> 482 float velocity, float distance) const

<a id="l00483" name="l00483"></a> 483{

<a id="l00484" name="l00484"></a> 484 return this-&gt;_impl.get_wall_turbulent_thermal_conductance(velocity, distance);

<a id="l00485" name="l00485"></a> 485}



<a id="l00486" name="l00486"></a> 486 

<a id="l00487" name="l00487"></a>[ 487](structIRockySPHDeviceModel.xhtml#a707d2c43244e0a2db08047ba86dbfd78)inline ROCKY_FUNCTIONS [IRockyCloudPoint](structIRockyCloudPoint.xhtml) [IRockySPHDeviceModel::get\_element\_cloud\_point](structIRockySPHDeviceModel.xhtml#a707d2c43244e0a2db08047ba86dbfd78)(

<a id="l00488" name="l00488"></a> 488 int point_cloud_index, const [IRockySPHElement](structIRockySPHElement.xhtml)&amp; element)

<a id="l00489" name="l00489"></a> 489{

<a id="l00490" name="l00490"></a> 490 auto point_cloud = this-&gt;device_model-&gt;point_clouds + point_cloud_index;

<a id="l00491" name="l00491"></a> 491 int point_index = this-&gt;_impl.device_model-&gt;sph_particle_scalars-&gt;get_scalar&lt;int&gt;(

<a id="l00492" name="l00492"></a> 492 point_cloud-&gt;sph_scalars_index, element._impl.element_index);

<a id="l00493" name="l00493"></a> 493 return [IRockyCloudPoint](structIRockyCloudPoint.xhtml)(point_cloud, point_index);

<a id="l00494" name="l00494"></a> 494}



<a id="l00495" name="l00495"></a> 495 

<a id="l00496" name="l00496"></a>[ 496](structIRockySPHDeviceModel.xhtml#aeafb1df061969bc91b4912460cebedb5)inline ROCKY_FUNCTIONS bool [IRockySPHDeviceModel::has\_turbulence\_modeling](structIRockySPHDeviceModel.xhtml#aeafb1df061969bc91b4912460cebedb5)() const

<a id="l00497" name="l00497"></a> 497{

<a id="l00498" name="l00498"></a> 498 return this-&gt;_impl.gen_sph-&gt;turb_type != ttLaminar;

<a id="l00499" name="l00499"></a> 499}



[IRockyCloudPoint](structIRockyCloudPoint.xhtml)

**Definition** rocky_point_cloud_api.hpp:15



[IRockySPHDeviceModel](structIRockySPHDeviceModel.xhtml)

**Definition** rocky_sph_model_api.hpp:146



[IRockySPHDeviceModel::get\_minimum\_distance\_squared](structIRockySPHDeviceModel.xhtml#a02751c7624b5eebe898fd497fd368f7e)

ROCKY_FUNCTIONS float get_minimum_distance_squared() const

**Definition** rocky_sph_model_api.hpp:390



[IRockySPHDeviceModel::get\_smoothing\_length](structIRockySPHDeviceModel.xhtml#a08276af5f02f29358b677c6c5c4eb623)

ROCKY_FUNCTIONS float get_smoothing_length() const

**Definition** rocky_sph_model_api.hpp:380



[IRockySPHDeviceModel::get\_turbulent\_prandtl\_number](structIRockySPHDeviceModel.xhtml#a085435fa6f49074b90d50686b5b6dd6c)

ROCKY_FUNCTIONS float get_turbulent_prandtl_number() const

**Definition** rocky_sph_model_api.hpp:415



[IRockySPHDeviceModel::get\_fluid\_viscosity](structIRockySPHDeviceModel.xhtml#a0e7d219d00a03afa23f4340f966f274f)

ROCKY_FUNCTIONS float get_fluid_viscosity() const

**Definition** rocky_sph_model_api.hpp:395



[IRockySPHDeviceModel::get\_minimum\_distance](structIRockySPHDeviceModel.xhtml#a11adf37fd1989526607c500a68f5a190)

ROCKY_FUNCTIONS float get_minimum_distance() const

**Definition** rocky_sph_model_api.hpp:385



[IRockySPHDeviceModel::get\_sph\_timestep](structIRockySPHDeviceModel.xhtml#a1b3b0ad0b9b4e4f723fed8cd6d859ff1)

ROCKY_FUNCTIONS float get_sph_timestep() const

**Definition** rocky_sph_model_api.hpp:350



[IRockySPHDeviceModel::get\_kernel\_type](structIRockySPHDeviceModel.xhtml#a1c804b61e8d38f22cc1df2960b94e5e5)

ROCKY_FUNCTIONS ESPHKernelType get_kernel_type() const

**Definition** rocky_sph_model_api.hpp:345



[IRockySPHDeviceModel::get\_element\_mass](structIRockySPHDeviceModel.xhtml#a2e07d8b951637326aa17c3869fa75f6f)

ROCKY_FUNCTIONS float get_element_mass() const

**Definition** rocky_sph_model_api.hpp:360



[IRockySPHDeviceModel::get\_fluid\_density](structIRockySPHDeviceModel.xhtml#a30c701000a588378110aa2a163a07847)

ROCKY_FUNCTIONS float get_fluid_density() const

**Definition** rocky_sph_model_api.hpp:400



[IRockySPHDeviceModel::get\_fluid\_specific\_heat](structIRockySPHDeviceModel.xhtml#a3f511dafb251e18d7dfc8a8f7c9cfcf1)

ROCKY_FUNCTIONS float get_fluid_specific_heat() const

**Definition** rocky_sph_model_api.hpp:410



[IRockySPHDeviceModel::get\_speed\_of\_sound](structIRockySPHDeviceModel.xhtml#a53367cb9b7f97cb102cb9e1703a95131)

ROCKY_FUNCTIONS float get_speed_of_sound() const

**Definition** rocky_sph_model_api.hpp:420



[IRockySPHDeviceModel::get\_fluid\_thermal\_conductivity](structIRockySPHDeviceModel.xhtml#a53bf5a5c5dc38bed487a0ff75b4f881e)

ROCKY_FUNCTIONS float get_fluid_thermal_conductivity() const

**Definition** rocky_sph_model_api.hpp:405



[IRockySPHDeviceModel::get\_element\_cloud\_point](structIRockySPHDeviceModel.xhtml#a707d2c43244e0a2db08047ba86dbfd78)

ROCKY_FUNCTIONS IRockyCloudPoint get_element_cloud_point(int point_cloud_index, const IRockySPHElement &amp;element)

**Definition** rocky_sph_model_api.hpp:487



[IRockySPHDeviceModel::get\_damping\_coefficient](structIRockySPHDeviceModel.xhtml#a7a1b280f7d23137f75cafb3eb29cf2bd)

ROCKY_FUNCTIONS float get_damping_coefficient() const

**Definition** rocky_sph_model_api.hpp:430



[IRockySPHDeviceModel::get\_kernel\_derivative](structIRockySPHDeviceModel.xhtml#a878401756bbf4517bd2dbf7c0b6f53b5)

ROCKY_FUNCTIONS float get_kernel_derivative(float distance) const

**Definition** rocky_sph_model_api.hpp:375



[IRockySPHDeviceModel::get\_wall\_turbulent\_thermal\_conductance](structIRockySPHDeviceModel.xhtml#a98a93eadf944d6ad89416d384e1476c3)

ROCKY_FUNCTIONS float get_wall_turbulent_thermal_conductance(float velocity, float distance) const

**Definition** rocky_sph_model_api.hpp:481



[IRockySPHDeviceModel::get\_boundary\_condition\_type](structIRockySPHDeviceModel.xhtml#a9a4ab5e39105ea7398fb0b3b15b2763c)

ROCKY_FUNCTIONS ESPHBoundaryType get_boundary_condition_type(int geometry_index) const

**Definition** rocky_sph_model_api.hpp:475



[IRockySPHDeviceModel::get\_initial\_element\_spacing](structIRockySPHDeviceModel.xhtml#aa0dda18957c28775ae86803575275db2)

ROCKY_FUNCTIONS float get_initial_element_spacing() const

**Definition** rocky_sph_model_api.hpp:365



[IRockySPHDeviceModel::get\_stiffness](structIRockySPHDeviceModel.xhtml#aa0fa9e6fb5e51db54a99a4bc45949409)

ROCKY_FUNCTIONS float get_stiffness() const

**Definition** rocky_sph_model_api.hpp:435



[IRockySPHDeviceModel::get\_kernel\_weight](structIRockySPHDeviceModel.xhtml#ac0f6dab31e47087f957b9c5f921044ca)

ROCKY_FUNCTIONS float get_kernel_weight(float distance) const

**Definition** rocky_sph_model_api.hpp:370



[IRockySPHDeviceModel::get\_surface\_tension](structIRockySPHDeviceModel.xhtml#ad52e0f31256e039c7043a7de165fadf7)

ROCKY_FUNCTIONS float get_surface_tension() const

**Definition** rocky_sph_model_api.hpp:425



[IRockySPHDeviceModel::has\_turbulence\_modeling](structIRockySPHDeviceModel.xhtml#aeafb1df061969bc91b4912460cebedb5)

ROCKY_FUNCTIONS bool has_turbulence_modeling() const

**Definition** rocky_sph_model_api.hpp:496



[IRockySPHElementScalarsModel](structIRockySPHElementScalarsModel.xhtml)

**Definition** rocky_sph_element_scalars.hpp:29



[IRockySPHElement](structIRockySPHElement.xhtml)

**Definition** rocky_sph_element_api.hpp:20



[IRockySPHModel](structIRockySPHModel.xhtml)

**Definition** rocky_sph_model_api.hpp:21



[IRockySPHModel::get\_fluid\_density](structIRockySPHModel.xhtml#a053a3b3c9bd14e5051f38a0024ab4536)

ROCKY_FUNCTIONS float get_fluid_density() const

**Definition** rocky_sph_model_api.cpp:58



[IRockySPHModel::get\_initial\_element\_spacing](structIRockySPHModel.xhtml#a212b6dd01fb2421258372058df86ccd6)

float get_initial_element_spacing() const

**Definition** rocky_sph_model_api.cpp:38



[IRockySPHModel::get\_speed\_of\_sound](structIRockySPHModel.xhtml#a223390925c0c7a8d4c0a8ceaef043fe4)

ROCKY_FUNCTIONS float get_speed_of_sound() const

**Definition** rocky_sph_model_api.cpp:73



[IRockySPHModel::get\_smoothing\_length](structIRockySPHModel.xhtml#a245fc38b2db35e544f3b78642f11aff7)

float get_smoothing_length() const

**Definition** rocky_sph_model_api.cpp:43



[IRockySPHModel::get\_kernel\_type](structIRockySPHModel.xhtml#a513d780295b0089e4d2814cc660f5c78)

ESPHKernelType get_kernel_type() const

**Definition** rocky_sph_model_api.cpp:33



[IRockySPHModel::get\_number\_of\_active\_sph\_elements](structIRockySPHModel.xhtml#a53aabea7b2fb880bf83924a036badac7)

int get_number_of_active_sph_elements() const

**Definition** rocky_sph_model_api.cpp:18



[IRockySPHModel::get\_number\_of\_sph\_elements](structIRockySPHModel.xhtml#a5a3c1e8c7b54f79f6803fb25799cbd6d)

int get_number_of_sph_elements() const

**Definition** rocky_sph_model_api.cpp:13



[IRockySPHModel::get\_number\_of\_active\_free\_sph\_elements](structIRockySPHModel.xhtml#a5f6419ca48c0e300e03e6820934a1718)

int get_number_of_active_free_sph_elements() const

**Definition** rocky_sph_model_api.cpp:28



[IRockySPHModel::get\_sph\_element\_scalars](structIRockySPHModel.xhtml#a60758ee9b344fcc7c76b500c0ac8f1cc)

IRockySPHElementScalarsModel get_sph_element_scalars() const

**Definition** rocky_sph_model_api.cpp:6



[IRockySPHModel::get\_number\_of\_active\_linked\_sph\_elements](structIRockySPHModel.xhtml#a832524def72a3d2da3bd449d5fb74368)

int get_number_of_active_linked_sph_elements() const

**Definition** rocky_sph_model_api.cpp:23



[IRockySPHModel::get\_fluid\_viscosity](structIRockySPHModel.xhtml#aa34cbdb0bbe713f76a24718369445b90)

ROCKY_FUNCTIONS float get_fluid_viscosity() const

**Definition** rocky_sph_model_api.cpp:53



[IRockySPHModel::get\_fluid\_thermal\_conductivity](structIRockySPHModel.xhtml#ab09538e62b2731ab25ee664d6eb08319)

ROCKY_FUNCTIONS float get_fluid_thermal_conductivity() const

**Definition** rocky_sph_model_api.cpp:63



[IRockySPHModel::is\_enabled](structIRockySPHModel.xhtml#ab104c8f250896d3528cbe2eb045b4c69)

bool is_enabled() const

**Definition** rocky_sph_model_api.cpp:83



[IRockySPHModel::get\_fluid\_specific\_heat](structIRockySPHModel.xhtml#acaf7cc9d7b268d36a2f739cfc3c3f7ca)

ROCKY_FUNCTIONS float get_fluid_specific_heat() const

**Definition** rocky_sph_model_api.cpp:68



[IRockySPHModel::get\_surface\_tension](structIRockySPHModel.xhtml#adae7b4a0340c884eb80e14d54a1b22f5)

ROCKY_FUNCTIONS float get_surface_tension() const

**Definition** rocky_sph_model_api.cpp:78



[IRockySPHModel::get\_element\_mass](structIRockySPHModel.xhtml#afafa8461838c8fa9ca237437c074facd)

float get_element_mass() const

**Definition** rocky_sph_model_api.cpp:48