Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F113759892
Particle_8hpp_source.html
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Wed, May 21, 01:29
Size
39 KB
Mime Type
text/html
Expires
Fri, May 23, 01:29 (2 d)
Engine
blob
Format
Raw Data
Handle
26297789
Attached To
R8982 phpc_submit_nbody
Particle_8hpp_source.html
View Options
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>PHPC - nBody project: /media/lmunier/Data/EPFL/Master/2eme_annee/Semestre_2/Parallel_and_High_Performance_Computing/phpc_nBody/src/Particle.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">PHPC - nBody project
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Particle.hpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="Particle_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>  </div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="preprocessor">#ifndef PHPC_NBODY_PARTICLE_HPP</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="preprocessor">#define PHPC_NBODY_PARTICLE_HPP</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="constants_8hpp.html">constants.hpp</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="Vector_8hpp.html">Vector.hpp</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "<a class="code" href="Tree_8hpp.html">Tree.hpp</a>"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="keyword">using namespace </span><a class="code" href="namespacestd.html">std</a>;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespaceTree.html">Tree</a> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">template</span><<span class="keyword">typename</span> Type></div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classTree_1_1Particle.html"> 40</a></span>  <span class="keyword">class </span><a class="code" href="classTree_1_1Particle.html">Particle</a> : <span class="keyword">public</span> <a class="code" href="classTree_1_1AbstractType.html">AbstractType</a><Type> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="classTree_1_1Particle.html#acf5241af5d99f4c9fc7a5108f682b583"> 48</a></span>  <span class="keyword">explicit</span> <a class="code" href="classTree_1_1Particle.html#acf5241af5d99f4c9fc7a5108f682b583">Particle</a>(<span class="keywordtype">float</span> mass = 0.0f, Type pos = Type()) : _pos(pos) {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  this->_m = mass;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  ~<a class="code" href="classTree_1_1Particle.html">Particle</a>() = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  </div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classTree_1_1Particle.html#afd729ea662eac93642f424e619beb3b1"> 62</a></span>  <a class="code" href="namespaceTree.html#af3bca205e37bd9b9c4b2fdc38ba6d3ad">my_type</a> <a class="code" href="classTree_1_1Particle.html#afd729ea662eac93642f424e619beb3b1">get_type</a>()<span class="keyword"> override </span>{ <span class="keywordflow">return</span> <a class="code" href="namespaceTree.html#af3bca205e37bd9b9c4b2fdc38ba6d3adaae6da3ea39dc23179342990ff167ccb7">ParticleT</a>; }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  </div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="classTree_1_1Particle.html#a9e9ca29ec750d707066e95318554928f"> 73</a></span>  Type <a class="code" href="classTree_1_1Particle.html#a9e9ca29ec750d707066e95318554928f">get</a>(<a class="code" href="constants_8hpp.html#af2b8102aeac8f02ab62ac42828289569">property</a> p)<span class="keyword"> override </span>{</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">switch</span> (p) {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">case</span> <a class="code" href="constants_8hpp.html#af2b8102aeac8f02ab62ac42828289569a91743bc3932693c4b8a6ca984e8a8437">POS</a> :</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">return</span> this->_pos;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">case</span> <a class="code" href="constants_8hpp.html#af2b8102aeac8f02ab62ac42828289569a52747a70f1917d227fb19ded90da348d">VEL</a> :</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">return</span> this->_vel;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">case</span> <a class="code" href="constants_8hpp.html#af2b8102aeac8f02ab62ac42828289569a972dbcdf74cff71e20bdcfb53be9c391">LOAD</a> :</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordflow">return</span> this->_load;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  </div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classTree_1_1Particle.html#a68961ce42ef677f22eadcd528b86ef6c"> 95</a></span>  <span class="keywordtype">void</span> <a class="code" href="classTree_1_1Particle.html#a68961ce42ef677f22eadcd528b86ef6c">set</a>(<a class="code" href="constants_8hpp.html#af2b8102aeac8f02ab62ac42828289569">property</a> p, Type vec)<span class="keyword"> override </span>{</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">switch</span> (p) {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">case</span> <a class="code" href="constants_8hpp.html#af2b8102aeac8f02ab62ac42828289569a91743bc3932693c4b8a6ca984e8a8437">POS</a> :</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  this->_pos = vec;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">case</span> <a class="code" href="constants_8hpp.html#af2b8102aeac8f02ab62ac42828289569a52747a70f1917d227fb19ded90da348d">VEL</a> :</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  this->_vel = vec;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">case</span> <a class="code" href="constants_8hpp.html#af2b8102aeac8f02ab62ac42828289569a972dbcdf74cff71e20bdcfb53be9c391">LOAD</a> :</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  this->_load = vec;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  }</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  </div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="classTree_1_1Particle.html#a6fc3e5d8331d9e432d1a5794c0a60a01"> 119</a></span>  <span class="keywordtype">int</span> <a class="code" href="classTree_1_1Particle.html#a6fc3e5d8331d9e432d1a5794c0a60a01">find_cell_idx</a>(Type origin)<span class="keyword"> override </span>{</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordtype">int</span> idx = 0;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  Type tmp_vec = this->_pos - origin;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">if</span>(tmp_vec.x > 0)</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  idx += 1;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">if</span>(tmp_vec.y < 0)</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  idx += 2;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="preprocessor">#if NB_DIM == DIM_3</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">if</span>(tmp_vec.z < 0)</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  idx += 4;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">return</span> idx;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  </div><div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="classTree_1_1Particle.html#a9014c8b7c98f963597b1d1f6c602603b"> 143</a></span>  <span class="keywordtype">void</span> <a class="code" href="classTree_1_1Particle.html#a9014c8b7c98f963597b1d1f6c602603b">compute_load</a>(<a class="code" href="classTree_1_1AbstractType.html">AbstractType<Type></a> *particle)<span class="keyword"> override </span>{</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  Type tmp = this->_pos - particle-><a class="code" href="classTree_1_1AbstractType.html#aa341d843f7ebfc7fb3f5383827e50712">get</a>(<a class="code" href="constants_8hpp.html#af2b8102aeac8f02ab62ac42828289569a91743bc3932693c4b8a6ca984e8a8437">POS</a>);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordtype">float</span> d = max(tmp.norm(), <a class="code" href="constants_8hpp.html#a002b2f4894492820fe708b1b7e7c5e70">EPSILON</a>);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  particle-><a class="code" href="classTree_1_1AbstractType.html#a6f30d2de6725088207b9d5fbd49e07d8">set</a>(<a class="code" href="constants_8hpp.html#af2b8102aeac8f02ab62ac42828289569a972dbcdf74cff71e20bdcfb53be9c391">LOAD</a>, particle-><a class="code" href="classTree_1_1AbstractType.html#aa341d843f7ebfc7fb3f5383827e50712">get</a>(<a class="code" href="constants_8hpp.html#af2b8102aeac8f02ab62ac42828289569a972dbcdf74cff71e20bdcfb53be9c391">LOAD</a>) + tmp * (<a class="code" href="constants_8hpp.html#aed9ea78689ecce0b7264c02c7f8a9a54">G</a> * this->_m) / d);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  </div><div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="classTree_1_1Particle.html#ae4750d1d5cfcd897d9d63379a206483e"> 152</a></span>  <span class="keywordtype">void</span> <a class="code" href="classTree_1_1Particle.html#ae4750d1d5cfcd897d9d63379a206483e">update_vel_pos</a>()<span class="keyword"> override </span>{</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  Type new_velocity = this->_load * <a class="code" href="constants_8hpp.html#a5400b1f2028d38732e4377be4f32b255">DELTA_T</a> + this->_vel;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  Type new_position = new_velocity * <a class="code" href="constants_8hpp.html#a5400b1f2028d38732e4377be4f32b255">DELTA_T</a> + this->_pos;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  </div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  this->_vel = new_velocity;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  this->_pos = new_position;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  this->_load = Type();</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  }</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  </div><div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="classTree_1_1Particle.html#a564dd4bde3a5bf36f41ed2973e451f06"> 166</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classTree_1_1Particle.html#a564dd4bde3a5bf36f41ed2973e451f06">is_out_boundaries</a>() {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keyword">auto</span> parent = this->get_parent();</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  </div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">if</span> (parent == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  </div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  Type distance = this->_pos - parent->get(<a class="code" href="constants_8hpp.html#af2b8102aeac8f02ab62ac42828289569a2159ffbd3a68037511ab5ab4dd35ace7">CENTER</a>);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  Type cell_size = parent->get(<a class="code" href="constants_8hpp.html#af2b8102aeac8f02ab62ac42828289569a6c8e5f290be4be86fd5e7048654b4a50">DIM</a>);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">if</span> (2 * abs(distance.x) > cell_size.x)</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  </div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">if</span> (2 * abs(distance.y) > cell_size.y)</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  </div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="preprocessor">#if NB_DIM == DIM_3</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">if</span> (2 * abs(distance.z) > cell_size.z)</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  }</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  </div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="classTree_1_1Particle.html#a82825d9d4e4df3ed7334344e8a84dcf6"> 193</a></span>  <span class="keywordtype">void</span> <a class="code" href="classTree_1_1Particle.html#a82825d9d4e4df3ed7334344e8a84dcf6">update_cell</a>(<span class="keywordtype">bool</span> add)<span class="keyword"> override </span>{</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keyword">auto</span> head = this->_parent;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordtype">float</span> mass_this = this->_m;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordtype">float</span> mass_head = head->get_mass();</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  </div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">if</span> (add) {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordtype">float</span> mass_tot = mass_head + mass_this;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  head->set(<a class="code" href="constants_8hpp.html#af2b8102aeac8f02ab62ac42828289569aef9ad485b29b65c89dd94b1fb31ad262">MASS_POS</a>, (head->get(<a class="code" href="constants_8hpp.html#af2b8102aeac8f02ab62ac42828289569aef9ad485b29b65c89dd94b1fb31ad262">MASS_POS</a>) * mass_head + this->_pos * mass_this) / mass_tot);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  head->set_mass(mass_tot);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordtype">float</span> mass_tot = max(mass_head - mass_this, (<span class="keywordtype">float</span>) <a class="code" href="constants_8hpp.html#a002b2f4894492820fe708b1b7e7c5e70">EPSILON</a>);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  </div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">if</span> (mass_tot == 0.0f)</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  head->set(<a class="code" href="constants_8hpp.html#af2b8102aeac8f02ab62ac42828289569aef9ad485b29b65c89dd94b1fb31ad262">MASS_POS</a>, head->get(<a class="code" href="constants_8hpp.html#af2b8102aeac8f02ab62ac42828289569a2159ffbd3a68037511ab5ab4dd35ace7">CENTER</a>));</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  head->set(<a class="code" href="constants_8hpp.html#af2b8102aeac8f02ab62ac42828289569aef9ad485b29b65c89dd94b1fb31ad262">MASS_POS</a>, (head->get(<a class="code" href="constants_8hpp.html#af2b8102aeac8f02ab62ac42828289569aef9ad485b29b65c89dd94b1fb31ad262">MASS_POS</a>) * mass_head - this->_pos * mass_this) / mass_tot);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  </div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  head->set_mass(mass_tot);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  }</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  }</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  </div><div class="line"><a name="l00223"></a><span class="lineno"><a class="line" href="classTree_1_1Particle.html#a3f4f46311d2383926af270e0497833e7"> 223</a></span>  <span class="keywordtype">int</span> <a class="code" href="classTree_1_1Particle.html#a3f4f46311d2383926af270e0497833e7">update_tree</a>()<span class="keyword"> override </span>{</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordtype">int</span> val = 0;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordtype">bool</span> first = <span class="keyword">true</span>;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  </div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordflow">while</span> (this->is_out_boundaries()) {</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordtype">int</span> nb_particles = 0;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keyword">auto</span> parent = this->_parent;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  </div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">if</span> (parent == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  </div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordflow">if</span> (first) {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  parent->clear_next();</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  first = <span class="keyword">false</span>;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> n : parent->get_next()) {</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keywordflow">if</span> (!(n->get_next().empty())) {</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  nb_particles++;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  }</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  </div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordflow">if</span> (nb_particles == 0) {</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  parent->del_level();</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="comment">//printf("Del level\n");</span></div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  val = -2;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  }</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  }</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  </div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  this->update_cell(<span class="keyword">false</span>);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  this->set_parent(parent->get_parent());</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  }</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  </div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  this->update_cell(<span class="keyword">false</span>);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  this->get_parent()->store_particle(<span class="keyword">this</span>, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordflow">return</span> val;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  }</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  </div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  Type _pos; </div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  Type _vel; </div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  Type _load; </div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  };</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> }</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  </div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  </div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> <span class="preprocessor">#endif //PHPC_NBODY_PARTICLE_HPP</span></div></div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="aconstants_8hpp_html_af2b8102aeac8f02ab62ac42828289569a52747a70f1917d227fb19ded90da348d"><div class="ttname"><a href="constants_8hpp.html#af2b8102aeac8f02ab62ac42828289569a52747a70f1917d227fb19ded90da348d">VEL</a></div><div class="ttdef"><b>Definition:</b> constants.hpp:59</div></div>
<div class="ttc" id="aconstants_8hpp_html_a5400b1f2028d38732e4377be4f32b255"><div class="ttname"><a href="constants_8hpp.html#a5400b1f2028d38732e4377be4f32b255">DELTA_T</a></div><div class="ttdeci">#define DELTA_T</div><div class="ttdef"><b>Definition:</b> constants.hpp:51</div></div>
<div class="ttc" id="aclassTree_1_1AbstractType_html"><div class="ttname"><a href="classTree_1_1AbstractType.html">Tree::AbstractType</a></div><div class="ttdef"><b>Definition:</b> Tree.hpp:45</div></div>
<div class="ttc" id="aconstants_8hpp_html_af2b8102aeac8f02ab62ac42828289569a91743bc3932693c4b8a6ca984e8a8437"><div class="ttname"><a href="constants_8hpp.html#af2b8102aeac8f02ab62ac42828289569a91743bc3932693c4b8a6ca984e8a8437">POS</a></div><div class="ttdef"><b>Definition:</b> constants.hpp:58</div></div>
<div class="ttc" id="aclassTree_1_1Particle_html"><div class="ttname"><a href="classTree_1_1Particle.html">Tree::Particle</a></div><div class="ttdef"><b>Definition:</b> Particle.hpp:40</div></div>
<div class="ttc" id="aconstants_8hpp_html_af2b8102aeac8f02ab62ac42828289569aef9ad485b29b65c89dd94b1fb31ad262"><div class="ttname"><a href="constants_8hpp.html#af2b8102aeac8f02ab62ac42828289569aef9ad485b29b65c89dd94b1fb31ad262">MASS_POS</a></div><div class="ttdef"><b>Definition:</b> constants.hpp:63</div></div>
<div class="ttc" id="aconstants_8hpp_html_af2b8102aeac8f02ab62ac42828289569a972dbcdf74cff71e20bdcfb53be9c391"><div class="ttname"><a href="constants_8hpp.html#af2b8102aeac8f02ab62ac42828289569a972dbcdf74cff71e20bdcfb53be9c391">LOAD</a></div><div class="ttdef"><b>Definition:</b> constants.hpp:60</div></div>
<div class="ttc" id="aconstants_8hpp_html_aed9ea78689ecce0b7264c02c7f8a9a54"><div class="ttname"><a href="constants_8hpp.html#aed9ea78689ecce0b7264c02c7f8a9a54">G</a></div><div class="ttdeci">#define G</div><div class="ttdef"><b>Definition:</b> constants.hpp:37</div></div>
<div class="ttc" id="aTree_8hpp_html"><div class="ttname"><a href="Tree_8hpp.html">Tree.hpp</a></div></div>
<div class="ttc" id="aclassTree_1_1Particle_html_afd729ea662eac93642f424e619beb3b1"><div class="ttname"><a href="classTree_1_1Particle.html#afd729ea662eac93642f424e619beb3b1">Tree::Particle::get_type</a></div><div class="ttdeci">my_type get_type() override</div><div class="ttdef"><b>Definition:</b> Particle.hpp:62</div></div>
<div class="ttc" id="aclassTree_1_1AbstractType_html_a6f30d2de6725088207b9d5fbd49e07d8"><div class="ttname"><a href="classTree_1_1AbstractType.html#a6f30d2de6725088207b9d5fbd49e07d8">Tree::AbstractType::set</a></div><div class="ttdeci">virtual void set(property p, Type vec)</div><div class="ttdef"><b>Definition:</b> Tree.hpp:120</div></div>
<div class="ttc" id="aclassTree_1_1Particle_html_a3f4f46311d2383926af270e0497833e7"><div class="ttname"><a href="classTree_1_1Particle.html#a3f4f46311d2383926af270e0497833e7">Tree::Particle::update_tree</a></div><div class="ttdeci">int update_tree() override</div><div class="ttdef"><b>Definition:</b> Particle.hpp:223</div></div>
<div class="ttc" id="aclassTree_1_1Particle_html_a564dd4bde3a5bf36f41ed2973e451f06"><div class="ttname"><a href="classTree_1_1Particle.html#a564dd4bde3a5bf36f41ed2973e451f06">Tree::Particle::is_out_boundaries</a></div><div class="ttdeci">bool is_out_boundaries()</div><div class="ttdef"><b>Definition:</b> Particle.hpp:166</div></div>
<div class="ttc" id="anamespaceTree_html_af3bca205e37bd9b9c4b2fdc38ba6d3adaae6da3ea39dc23179342990ff167ccb7"><div class="ttname"><a href="namespaceTree.html#af3bca205e37bd9b9c4b2fdc38ba6d3adaae6da3ea39dc23179342990ff167ccb7">Tree::ParticleT</a></div><div class="ttdef"><b>Definition:</b> Tree.hpp:35</div></div>
<div class="ttc" id="aclassTree_1_1Particle_html_a68961ce42ef677f22eadcd528b86ef6c"><div class="ttname"><a href="classTree_1_1Particle.html#a68961ce42ef677f22eadcd528b86ef6c">Tree::Particle::set</a></div><div class="ttdeci">void set(property p, Type vec) override</div><div class="ttdef"><b>Definition:</b> Particle.hpp:95</div></div>
<div class="ttc" id="aclassTree_1_1Particle_html_ae4750d1d5cfcd897d9d63379a206483e"><div class="ttname"><a href="classTree_1_1Particle.html#ae4750d1d5cfcd897d9d63379a206483e">Tree::Particle::update_vel_pos</a></div><div class="ttdeci">void update_vel_pos() override</div><div class="ttdef"><b>Definition:</b> Particle.hpp:152</div></div>
<div class="ttc" id="aconstants_8hpp_html_af2b8102aeac8f02ab62ac42828289569a2159ffbd3a68037511ab5ab4dd35ace7"><div class="ttname"><a href="constants_8hpp.html#af2b8102aeac8f02ab62ac42828289569a2159ffbd3a68037511ab5ab4dd35ace7">CENTER</a></div><div class="ttdef"><b>Definition:</b> constants.hpp:62</div></div>
<div class="ttc" id="aclassTree_1_1Particle_html_a6fc3e5d8331d9e432d1a5794c0a60a01"><div class="ttname"><a href="classTree_1_1Particle.html#a6fc3e5d8331d9e432d1a5794c0a60a01">Tree::Particle::find_cell_idx</a></div><div class="ttdeci">int find_cell_idx(Type origin) override</div><div class="ttdef"><b>Definition:</b> Particle.hpp:119</div></div>
<div class="ttc" id="aconstants_8hpp_html_af2b8102aeac8f02ab62ac42828289569a6c8e5f290be4be86fd5e7048654b4a50"><div class="ttname"><a href="constants_8hpp.html#af2b8102aeac8f02ab62ac42828289569a6c8e5f290be4be86fd5e7048654b4a50">DIM</a></div><div class="ttdef"><b>Definition:</b> constants.hpp:61</div></div>
<div class="ttc" id="aconstants_8hpp_html"><div class="ttname"><a href="constants_8hpp.html">constants.hpp</a></div></div>
<div class="ttc" id="anamespaceTree_html"><div class="ttname"><a href="namespaceTree.html">Tree</a></div></div>
<div class="ttc" id="aclassTree_1_1Particle_html_a9014c8b7c98f963597b1d1f6c602603b"><div class="ttname"><a href="classTree_1_1Particle.html#a9014c8b7c98f963597b1d1f6c602603b">Tree::Particle::compute_load</a></div><div class="ttdeci">void compute_load(AbstractType< Type > *particle) override</div><div class="ttdef"><b>Definition:</b> Particle.hpp:143</div></div>
<div class="ttc" id="aclassTree_1_1Particle_html_acf5241af5d99f4c9fc7a5108f682b583"><div class="ttname"><a href="classTree_1_1Particle.html#acf5241af5d99f4c9fc7a5108f682b583">Tree::Particle::Particle</a></div><div class="ttdeci">Particle(float mass=0.0f, Type pos=Type())</div><div class="ttdef"><b>Definition:</b> Particle.hpp:48</div></div>
<div class="ttc" id="aconstants_8hpp_html_a002b2f4894492820fe708b1b7e7c5e70"><div class="ttname"><a href="constants_8hpp.html#a002b2f4894492820fe708b1b7e7c5e70">EPSILON</a></div><div class="ttdeci">#define EPSILON</div><div class="ttdef"><b>Definition:</b> constants.hpp:38</div></div>
<div class="ttc" id="anamespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div></div>
<div class="ttc" id="aconstants_8hpp_html_af2b8102aeac8f02ab62ac42828289569"><div class="ttname"><a href="constants_8hpp.html#af2b8102aeac8f02ab62ac42828289569">property</a></div><div class="ttdeci">property</div><div class="ttdef"><b>Definition:</b> constants.hpp:57</div></div>
<div class="ttc" id="aclassTree_1_1Particle_html_a9e9ca29ec750d707066e95318554928f"><div class="ttname"><a href="classTree_1_1Particle.html#a9e9ca29ec750d707066e95318554928f">Tree::Particle::get</a></div><div class="ttdeci">Type get(property p) override</div><div class="ttdef"><b>Definition:</b> Particle.hpp:73</div></div>
<div class="ttc" id="aclassTree_1_1AbstractType_html_aa341d843f7ebfc7fb3f5383827e50712"><div class="ttname"><a href="classTree_1_1AbstractType.html#aa341d843f7ebfc7fb3f5383827e50712">Tree::AbstractType::get</a></div><div class="ttdeci">virtual Type get(property p)=0</div></div>
<div class="ttc" id="aclassTree_1_1Particle_html_a82825d9d4e4df3ed7334344e8a84dcf6"><div class="ttname"><a href="classTree_1_1Particle.html#a82825d9d4e4df3ed7334344e8a84dcf6">Tree::Particle::update_cell</a></div><div class="ttdeci">void update_cell(bool add) override</div><div class="ttdef"><b>Definition:</b> Particle.hpp:193</div></div>
<div class="ttc" id="anamespaceTree_html_af3bca205e37bd9b9c4b2fdc38ba6d3ad"><div class="ttname"><a href="namespaceTree.html#af3bca205e37bd9b9c4b2fdc38ba6d3ad">Tree::my_type</a></div><div class="ttdeci">my_type</div><div class="ttdef"><b>Definition:</b> Tree.hpp:34</div></div>
<div class="ttc" id="aVector_8hpp_html"><div class="ttname"><a href="Vector_8hpp.html">Vector.hpp</a></div></div>
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by  <a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>
</body>
</html>
Event Timeline
Log In to Comment