Update docs

This commit is contained in:
Cory Balaton 2023-10-08 15:07:52 +02:00
parent e9c2db5d73
commit ff1fe59268
No known key found for this signature in database
GPG Key ID: 3E5FCEBFD80F432B
61 changed files with 1782 additions and 401 deletions

BIN
docs/100_particles.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

View File

@ -128,7 +128,7 @@ $(document).ready(function(){initNavTree('Particle_8hpp_source.html',''); initRe
<div class="ttc" id="aclassParticle_html_a566dcc1de4bdc01251776948798ea8e1"><div class="ttname"><a href="classParticle.html#a566dcc1de4bdc01251776948798ea8e1">Particle::q</a></div><div class="ttdeci">double q</div><div class="ttdoc">Charge.</div><div class="ttdef"><b>Definition:</b> <a href="Particle_8hpp_source.html#l00021">Particle.hpp:21</a></div></div>
<div class="ttc" id="aclassParticle_html_acf1a0f3c978b06d76df5bb4279594467"><div class="ttname"><a href="classParticle.html#acf1a0f3c978b06d76df5bb4279594467">Particle::r_vec</a></div><div class="ttdeci">arma::vec::fixed&lt; 3 &gt; r_vec</div><div class="ttdoc">position</div><div class="ttdef"><b>Definition:</b> <a href="Particle_8hpp_source.html#l00023">Particle.hpp:23</a></div></div>
<div class="ttc" id="aclassParticle_html_aedcc7e1bc53b0e2b1a4a07c9a1b47563"><div class="ttname"><a href="classParticle.html#aedcc7e1bc53b0e2b1a4a07c9a1b47563">Particle::m</a></div><div class="ttdeci">double m</div><div class="ttdoc">Mass.</div><div class="ttdef"><b>Definition:</b> <a href="Particle_8hpp_source.html#l00022">Particle.hpp:22</a></div></div>
<div class="ttc" id="aclassPenningTrap_html"><div class="ttname"><a href="classPenningTrap.html">PenningTrap</a></div><div class="ttdoc">A class that simulates a Penning trap.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8hpp_source.html#l00025">PenningTrap.hpp:25</a></div></div>
<div class="ttc" id="aclassPenningTrap_html"><div class="ttname"><a href="classPenningTrap.html">PenningTrap</a></div><div class="ttdoc">A class that simulates a Penning trap.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8hpp_source.html#l00029">PenningTrap.hpp:29</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->

View File

@ -104,12 +104,9 @@ $(document).ready(function(){initNavTree('PenningTrap_8cpp.html',''); initResiza
<p>The implementation of the <a class="el" href="classPenningTrap.html" title="A class that simulates a Penning trap.">PenningTrap</a> class.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="utils_8hpp_source.html">utils.hpp</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="PenningTrap_8hpp_source.html">PenningTrap.hpp</a>&quot;</code><br />
<div class="textblock"><code>#include &quot;<a class="el" href="PenningTrap_8hpp_source.html">PenningTrap.hpp</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="constants_8hpp_source.html">constants.hpp</a>&quot;</code><br />
<code>#include &lt;algorithm&gt;</code><br />
<code>#include &lt;stdexcept&gt;</code><br />
<code>#include &lt;omp.h&gt;</code><br />
<code>#include &quot;<a class="el" href="utils_8hpp_source.html">utils.hpp</a>&quot;</code><br />
</div>
<p><a href="PenningTrap_8cpp_source.html">Go to the source code of this file.</a></p>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>

View File

@ -102,156 +102,202 @@ $(document).ready(function(){initNavTree('PenningTrap_8cpp_source.html',''); ini
</div><!--header-->
<div class="contents">
<a href="PenningTrap_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span> </div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="preprocessor">#include &quot;<a class="code" href="utils_8hpp.html">utils.hpp</a>&quot;</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="preprocessor">#include &quot;<a class="code" href="PenningTrap_8hpp.html">PenningTrap.hpp</a>&quot;</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="preprocessor">#include &quot;<a class="code" href="constants_8hpp.html">constants.hpp</a>&quot;</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="preprocessor">#include &lt;algorithm&gt;</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="preprocessor">#include &lt;stdexcept&gt;</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="preprocessor">#include &lt;omp.h&gt;</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> </div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="preprocessor">#pragma omp declare reduction( + : arma::vec : omp_out += omp_in ) \</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="preprocessor"> initializer( omp_priv = omp_orig )</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> </div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"><a class="line" href="classPenningTrap.html#a81add5063bd5f29d77f0b5c299c6c560"> 26</a></span><a class="code hl_function" href="classPenningTrap.html#a81add5063bd5f29d77f0b5c299c6c560">PenningTrap::PenningTrap</a>(<span class="keywordtype">double</span> B_0, <span class="keywordtype">double</span> V_0, <span class="keywordtype">double</span> d)</div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span>{</div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> this-&gt;B_0 = <a class="code hl_variable" href="classPenningTrap.html#a0cac3509aa96e71a26d3b2c902e27716">B_0</a>;</div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> this-&gt;V_0 = <a class="code hl_variable" href="classPenningTrap.html#a715329844d75ec4c04f8391421fb4e89">V_0</a>;</div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> this-&gt;d = <a class="code hl_variable" href="classPenningTrap.html#a66dfe89c68716b9502927b97f59c27d2">d</a>;</div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span>}</div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> </div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"><a class="line" href="classPenningTrap.html#a6e9776ff5b149f01080800716455d7c8"> 33</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="classPenningTrap.html#a6e9776ff5b149f01080800716455d7c8">PenningTrap::add_particle</a>(<a class="code hl_class" href="classParticle.html">Particle</a> particle)</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span>{</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">particles</a>.push_back(particle);</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span>}</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> </div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"><a class="line" href="classPenningTrap.html#a978a2e2026a4b5308d5184712f81704b"> 38</a></span>arma::vec <a class="code hl_function" href="classPenningTrap.html#a978a2e2026a4b5308d5184712f81704b">PenningTrap::external_E_field</a>(arma::vec r)</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span>{</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> arma::vec::fixed&lt;3&gt; res;</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> <span class="keywordtype">double</span> f = this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a715329844d75ec4c04f8391421fb4e89">V_0</a>/(this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a66dfe89c68716b9502927b97f59c27d2">d</a>*this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a66dfe89c68716b9502927b97f59c27d2">d</a>);</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> res(0) = r(0);</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> res(1) = r(1);</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> res(2) = -2.*r(2);</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> </div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> <span class="keywordflow">return</span> f*res;</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span>}</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> </div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"><a class="line" href="classPenningTrap.html#a2a3e7f480ba52e9f24d4c50c3981a784"> 49</a></span>arma::vec <a class="code hl_function" href="classPenningTrap.html#a2a3e7f480ba52e9f24d4c50c3981a784">PenningTrap::external_B_field</a>(arma::vec r)</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span>{</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> arma::vec::fixed&lt;3&gt; res;</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> res(0) = 0.;</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> res(1) = 0.;</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> res(2) = this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a0cac3509aa96e71a26d3b2c902e27716">B_0</a>;</div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="preprocessor">#include &quot;<a class="code" href="PenningTrap_8hpp.html">PenningTrap.hpp</a>&quot;</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="preprocessor">#include &quot;<a class="code" href="constants_8hpp.html">constants.hpp</a>&quot;</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="preprocessor">#include &quot;<a class="code" href="utils_8hpp.html">utils.hpp</a>&quot;</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> </div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"><a class="line" href="classPenningTrap.html#a81add5063bd5f29d77f0b5c299c6c560"> 20</a></span><a class="code hl_function" href="classPenningTrap.html#a81add5063bd5f29d77f0b5c299c6c560">PenningTrap::PenningTrap</a>(<span class="keywordtype">double</span> B_0, <span class="keywordtype">double</span> V_0, <span class="keywordtype">double</span> d)</div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span>{</div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> this-&gt;B_0 = <a class="code hl_variable" href="classPenningTrap.html#a0cac3509aa96e71a26d3b2c902e27716">B_0</a>;</div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> this-&gt;V_0 = <a class="code hl_variable" href="classPenningTrap.html#a715329844d75ec4c04f8391421fb4e89">V_0</a>;</div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> this-&gt;d = <a class="code hl_variable" href="classPenningTrap.html#a66dfe89c68716b9502927b97f59c27d2">d</a>;</div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span>}</div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> </div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"><a class="line" href="classPenningTrap.html#a6e9776ff5b149f01080800716455d7c8"> 27</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="classPenningTrap.html#a6e9776ff5b149f01080800716455d7c8">PenningTrap::add_particle</a>(<a class="code hl_class" href="classParticle.html">Particle</a> particle)</div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span>{</div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">particles</a>.push_back(particle);</div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span>}</div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> </div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"><a class="line" href="classPenningTrap.html#a978a2e2026a4b5308d5184712f81704b"> 32</a></span>arma::vec <a class="code hl_function" href="classPenningTrap.html#a978a2e2026a4b5308d5184712f81704b">PenningTrap::external_E_field</a>(arma::vec r)</div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span>{</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> arma::vec::fixed&lt;3&gt; res;</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> <span class="keywordtype">double</span> f = this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a715329844d75ec4c04f8391421fb4e89">V_0</a> / (this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a66dfe89c68716b9502927b97f59c27d2">d</a> * this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a66dfe89c68716b9502927b97f59c27d2">d</a>);</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> res(0) = r(0);</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> res(1) = r(1);</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> res(2) = -2. * r(2);</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> </div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> <span class="keywordflow">return</span> f * res;</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span>}</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> </div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"><a class="line" href="classPenningTrap.html#a2a3e7f480ba52e9f24d4c50c3981a784"> 43</a></span>arma::vec <a class="code hl_function" href="classPenningTrap.html#a2a3e7f480ba52e9f24d4c50c3981a784">PenningTrap::external_B_field</a>(arma::vec r)</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span>{</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> arma::vec::fixed&lt;3&gt; res{0., 0., this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a0cac3509aa96e71a26d3b2c902e27716">B_0</a>};</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> </div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> <span class="keywordflow">return</span> res;</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span>}</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> </div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"><a class="line" href="classPenningTrap.html#a4790f41e4fbc6ede4991aa7bbda92182"> 50</a></span>arma::vec <a class="code hl_function" href="classPenningTrap.html#a4790f41e4fbc6ede4991aa7bbda92182">PenningTrap::force_on_particle</a>(<span class="keywordtype">int</span> i, <span class="keywordtype">int</span> j)</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span>{</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> <span class="comment">// Calculate the difference between the particles&#39; position</span></div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> arma::vec::fixed&lt;3&gt; res =</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">particles</a>.at(i).r_vec - this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">particles</a>.at(j).r_vec;</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> </div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> <span class="keywordflow">return</span> res;</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span>}</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> <span class="comment">// Get the distance between the particles</span></div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> <span class="keywordtype">double</span> norm = arma::norm(res);</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> </div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"><a class="line" href="classPenningTrap.html#a4790f41e4fbc6ede4991aa7bbda92182"> 59</a></span>arma::vec <a class="code hl_function" href="classPenningTrap.html#a4790f41e4fbc6ede4991aa7bbda92182">PenningTrap::force_on_particle</a>(<span class="keywordtype">int</span> i, <span class="keywordtype">int</span> j)</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span>{</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> <span class="comment">// Calculate the difference between the particles&#39; position</span></div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> arma::vec::fixed&lt;3&gt; res = this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">particles</a>.at(i).r_vec </div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> - this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">particles</a>.at(j).r_vec;</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> <span class="comment">// Multiply res with p_j&#39;s charge divided by the norm cubed</span></div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> res *= this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">particles</a>.at(j).q / (norm * norm * norm);</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> </div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> <span class="keywordflow">return</span> res;</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span>}</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> </div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> <span class="comment">// Get the distance between the particles</span></div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> <span class="keywordtype">double</span> norm = arma::norm(res);</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> </div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> <span class="comment">// Multiply res with p_j&#39;s charge divided by the norm cubed</span></div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> res *= this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">particles</a>.at(j).q/(norm*norm*norm);</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"><a class="line" href="classPenningTrap.html#a045adb85e97a8e0c38fb36d2fd74eeee"> 65</a></span>arma::vec <a class="code hl_function" href="classPenningTrap.html#a045adb85e97a8e0c38fb36d2fd74eeee">PenningTrap::total_force_external</a>(<span class="keywordtype">int</span> i)</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span>{</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> <a class="code hl_class" href="classParticle.html">Particle</a> p = this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">particles</a>.at(i);</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> </div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> arma::vec::fixed&lt;3&gt; B = this-&gt;<a class="code hl_function" href="classPenningTrap.html#a2a3e7f480ba52e9f24d4c50c3981a784">external_B_field</a>(p.<a class="code hl_variable" href="classParticle.html#acf1a0f3c978b06d76df5bb4279594467">r_vec</a>);</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> </div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> <span class="keywordflow">return</span> res;</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span>}</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> </div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"><a class="line" href="classPenningTrap.html#a045adb85e97a8e0c38fb36d2fd74eeee"> 74</a></span>arma::vec <a class="code hl_function" href="classPenningTrap.html#a045adb85e97a8e0c38fb36d2fd74eeee">PenningTrap::total_force_external</a>(<span class="keywordtype">int</span> i)</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span>{</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> <a class="code hl_class" href="classParticle.html">Particle</a> p = this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">particles</a>.at(i);</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> </div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> arma::vec::fixed&lt;3&gt; v_cross_B;</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> arma::vec::fixed&lt;3&gt; v_cross_B{p.<a class="code hl_variable" href="classParticle.html#a4a5d22c7aeca66f67d083f270cba25df">v_vec</a>(1) * B(2) - p.<a class="code hl_variable" href="classParticle.html#a4a5d22c7aeca66f67d083f270cba25df">v_vec</a>(2) * B(1),</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> p.<a class="code hl_variable" href="classParticle.html#a4a5d22c7aeca66f67d083f270cba25df">v_vec</a>(2) * B(0) - p.<a class="code hl_variable" href="classParticle.html#a4a5d22c7aeca66f67d083f270cba25df">v_vec</a>(0) * B(2),</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> p.<a class="code hl_variable" href="classParticle.html#a4a5d22c7aeca66f67d083f270cba25df">v_vec</a>(0) * B(1) - p.<a class="code hl_variable" href="classParticle.html#a4a5d22c7aeca66f67d083f270cba25df">v_vec</a>(1) * B(0)};</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> </div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> arma::vec force = p.<a class="code hl_variable" href="classParticle.html#a566dcc1de4bdc01251776948798ea8e1">q</a> * (this-&gt;<a class="code hl_function" href="classPenningTrap.html#a978a2e2026a4b5308d5184712f81704b">external_E_field</a>(p.<a class="code hl_variable" href="classParticle.html#acf1a0f3c978b06d76df5bb4279594467">r_vec</a>) + v_cross_B);</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> </div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> <span class="keywordflow">return</span> force;</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span>}</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> </div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> arma::vec::fixed&lt;3&gt; B = this-&gt;<a class="code hl_function" href="classPenningTrap.html#a2a3e7f480ba52e9f24d4c50c3981a784">external_B_field</a>(p.<a class="code hl_variable" href="classParticle.html#acf1a0f3c978b06d76df5bb4279594467">r_vec</a>);</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> </div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> v_cross_B(0) = p.<a class="code hl_variable" href="classParticle.html#a4a5d22c7aeca66f67d083f270cba25df">v_vec</a>(1)*B(2) - p.<a class="code hl_variable" href="classParticle.html#a4a5d22c7aeca66f67d083f270cba25df">v_vec</a>(2)*B(1);</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> v_cross_B(1) = p.<a class="code hl_variable" href="classParticle.html#a4a5d22c7aeca66f67d083f270cba25df">v_vec</a>(2)*B(0) - p.<a class="code hl_variable" href="classParticle.html#a4a5d22c7aeca66f67d083f270cba25df">v_vec</a>(0)*B(2);</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> v_cross_B(2) = p.<a class="code hl_variable" href="classParticle.html#a4a5d22c7aeca66f67d083f270cba25df">v_vec</a>(0)*B(1) - p.<a class="code hl_variable" href="classParticle.html#a4a5d22c7aeca66f67d083f270cba25df">v_vec</a>(1)*B(0);</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"><a class="line" href="classPenningTrap.html#a135db7d991d9b88b00fde4edee71f78d"> 80</a></span>arma::vec <a class="code hl_function" href="classPenningTrap.html#a135db7d991d9b88b00fde4edee71f78d">PenningTrap::total_force_particles</a>(<span class="keywordtype">int</span> i)</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span>{</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> <a class="code hl_class" href="classParticle.html">Particle</a> p = this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">particles</a>.at(i);</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> </div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> arma::vec res(3);</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> </div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> arma::vec force = p.<a class="code hl_variable" href="classParticle.html#a566dcc1de4bdc01251776948798ea8e1">q</a></div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> *(this-&gt;<a class="code hl_function" href="classPenningTrap.html#a978a2e2026a4b5308d5184712f81704b">external_E_field</a>(p.<a class="code hl_variable" href="classParticle.html#acf1a0f3c978b06d76df5bb4279594467">r_vec</a>) + v_cross_B);</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> </div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> <span class="keywordflow">return</span> force;</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span>}</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> </div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"><a class="line" href="classPenningTrap.html#a135db7d991d9b88b00fde4edee71f78d"> 92</a></span>arma::vec <a class="code hl_function" href="classPenningTrap.html#a135db7d991d9b88b00fde4edee71f78d">PenningTrap::total_force_particles</a>(<span class="keywordtype">int</span> i)</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span>{</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> <a class="code hl_class" href="classParticle.html">Particle</a> p = this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">particles</a>.at(i);</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j &lt; this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">particles</a>.size(); j++) {</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> <span class="keywordflow">if</span> (i == j) {</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> <span class="keywordflow">continue</span>;</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> }</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> </div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> res += this-&gt;<a class="code hl_function" href="classPenningTrap.html#a4790f41e4fbc6ede4991aa7bbda92182">force_on_particle</a>(i, j);</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> }</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> </div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> res *= <a class="code hl_define" href="constants_8hpp.html#a4e451456ad7e9276ed0afa42826e7ccb">K_E</a> * (p.<a class="code hl_variable" href="classParticle.html#a566dcc1de4bdc01251776948798ea8e1">q</a> / p.<a class="code hl_variable" href="classParticle.html#aedcc7e1bc53b0e2b1a4a07c9a1b47563">m</a>);</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> </div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> arma::vec res(3);</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> </div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j=0; j &lt; this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">particles</a>.size(); j++) {</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> <span class="keywordflow">if</span> (i == j) {</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> <span class="keywordflow">continue</span>;</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> }</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> </div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> res += this-&gt;<a class="code hl_function" href="classPenningTrap.html#a4790f41e4fbc6ede4991aa7bbda92182">force_on_particle</a>(i, j);</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> }</div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> </div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> res *= <a class="code hl_define" href="constants_8hpp.html#a4e451456ad7e9276ed0afa42826e7ccb">K_E</a>*(p.<a class="code hl_variable" href="classParticle.html#a566dcc1de4bdc01251776948798ea8e1">q</a>/p.<a class="code hl_variable" href="classParticle.html#aedcc7e1bc53b0e2b1a4a07c9a1b47563">m</a>);</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> </div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> <span class="keywordflow">return</span> res;</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span>}</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> <span class="keywordflow">return</span> res;</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span>}</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> </div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"><a class="line" href="classPenningTrap.html#a83cc7a04dae009ed8e75453c38fdf8be"> 99</a></span>arma::vec <a class="code hl_function" href="classPenningTrap.html#a83cc7a04dae009ed8e75453c38fdf8be">PenningTrap::total_force</a>(<span class="keywordtype">int</span> i)</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span>{</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> <span class="keywordflow">return</span> this-&gt;<a class="code hl_function" href="classPenningTrap.html#a045adb85e97a8e0c38fb36d2fd74eeee">total_force_external</a>(i) - this-&gt;<a class="code hl_function" href="classPenningTrap.html#a135db7d991d9b88b00fde4edee71f78d">total_force_particles</a>(i);</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span>}</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> </div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"><a class="line" href="classPenningTrap.html#ab891b839c40eeb38d8a2a636c70090a9"> 104</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="classPenningTrap.html#ab891b839c40eeb38d8a2a636c70090a9">PenningTrap::evolve_RK4</a>(<span class="keywordtype">double</span> dt)</div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span>{</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> std::vector&lt;Particle&gt; tmp_particles = this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">particles</a>;</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> </div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> arma::vec::fixed&lt;3&gt; *k_v = <span class="keyword">new</span> arma::vec::fixed&lt;3&gt;[this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">particles</a>.size()*4];</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> arma::vec::fixed&lt;3&gt; *k_r = <span class="keyword">new</span> arma::vec::fixed&lt;3&gt;[this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">particles</a>.size()*4];</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> </div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"><a class="line" href="classPenningTrap.html#a83cc7a04dae009ed8e75453c38fdf8be"> 111</a></span>arma::vec <a class="code hl_function" href="classPenningTrap.html#a83cc7a04dae009ed8e75453c38fdf8be">PenningTrap::total_force</a>(<span class="keywordtype">int</span> i)</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span>{</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> <span class="keywordflow">return</span> this-&gt;<a class="code hl_function" href="classPenningTrap.html#a045adb85e97a8e0c38fb36d2fd74eeee">total_force_external</a>(i) - this-&gt;<a class="code hl_function" href="classPenningTrap.html#a135db7d991d9b88b00fde4edee71f78d">total_force_particles</a>(i);</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span>}</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> </div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"><a class="line" href="classPenningTrap.html#ab891b839c40eeb38d8a2a636c70090a9"> 116</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="classPenningTrap.html#ab891b839c40eeb38d8a2a636c70090a9">PenningTrap::evolve_RK4</a>(<span class="keywordtype">double</span> dt)</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span>{</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> </div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span>}</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> <span class="keywordtype">int</span> size = this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">particles</a>.size();</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> </div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i&lt;size; i++) {</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> k_v[i] = this-&gt;<a class="code hl_function" href="classPenningTrap.html#a83cc7a04dae009ed8e75453c38fdf8be">total_force</a>(i)/this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">particles</a>.at(i).m;</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> k_r[i] = this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">particles</a>.at(i).v_vec;</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> }</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> </div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i&lt;size; i++) {</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> <a class="code hl_class" href="classParticle.html">Particle</a> *p = &amp;this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">particles</a>.at(i);</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> </div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"><a class="line" href="classPenningTrap.html#a56544b6f4befb42984e9650cf2a40965"> 121</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="classPenningTrap.html#a56544b6f4befb42984e9650cf2a40965">PenningTrap::evolve_forward_euler</a>(<span class="keywordtype">double</span> dt)</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span>{</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> std::vector&lt;Particle&gt; new_state = this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">particles</a>;</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> p-&gt;<a class="code hl_variable" href="classParticle.html#a4a5d22c7aeca66f67d083f270cba25df">v_vec</a> = tmp_particles.at(i).v_vec + (dt/2)*k_v[i];</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> p-&gt;<a class="code hl_variable" href="classParticle.html#acf1a0f3c978b06d76df5bb4279594467">r_vec</a> = tmp_particles.at(i).r_vec + (dt/2)*k_r[i];</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> }</div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> </div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> <a class="code hl_class" href="classParticle.html">Particle</a> *p;</div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> </div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span><span class="preprocessor"> #pragma omp parallel for private(p)</span></div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i &lt; this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">particles</a>.size(); i++) {</div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> p = &amp;new_state.at(i);</div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> p-&gt;<a class="code hl_variable" href="classParticle.html#a4a5d22c7aeca66f67d083f270cba25df">v_vec</a> += dt*this-&gt;<a class="code hl_function" href="classPenningTrap.html#a83cc7a04dae009ed8e75453c38fdf8be">total_force</a>(i)/new_state.at(i).m;</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> p-&gt;<a class="code hl_variable" href="classParticle.html#acf1a0f3c978b06d76df5bb4279594467">r_vec</a> += dt*this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">particles</a>.at(i).v_vec;</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> }</div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> </div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i&lt;size; i++) {</div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> k_v[1*size + i] = this-&gt;<a class="code hl_function" href="classPenningTrap.html#a83cc7a04dae009ed8e75453c38fdf8be">total_force</a>(i)/this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">particles</a>.at(i).m;</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> k_r[1*size + i] = this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">particles</a>.at(i).v_vec;</div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> }</div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> </div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i&lt;size; i++) {</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> <a class="code hl_class" href="classParticle.html">Particle</a> *p = &amp;this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">particles</a>.at(i);</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> </div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">particles</a> = new_state;</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span>}</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> </div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span>arma::vec PenningTrap::get_particle(<span class="keywordtype">int</span> i)</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span>{</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> <span class="keywordflow">return</span> this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">particles</a>.at(i).r_vec;</div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span>}</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> </div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span><span class="keywordtype">double</span> PenningTrap::get_d()</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span>{</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> <span class="keywordflow">return</span> this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a66dfe89c68716b9502927b97f59c27d2">d</a>;</div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span>}</div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> p-&gt;<a class="code hl_variable" href="classParticle.html#a4a5d22c7aeca66f67d083f270cba25df">v_vec</a> = tmp_particles.at(i).v_vec + (dt/2)*k_v[1*size + i];</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> p-&gt;<a class="code hl_variable" href="classParticle.html#acf1a0f3c978b06d76df5bb4279594467">r_vec</a> = tmp_particles.at(i).r_vec + (dt/2)*k_r[1*size + i];</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> }</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> </div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i&lt;size; i++) {</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> k_v[2*size + i] = this-&gt;<a class="code hl_function" href="classPenningTrap.html#a83cc7a04dae009ed8e75453c38fdf8be">total_force</a>(i)/this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">particles</a>.at(i).m;</div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> k_r[2*size + i] = this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">particles</a>.at(i).v_vec;</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> }</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> </div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i&lt;size; i++) {</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> <a class="code hl_class" href="classParticle.html">Particle</a> *p = &amp;this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">particles</a>.at(i);</div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> </div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> p-&gt;<a class="code hl_variable" href="classParticle.html#a4a5d22c7aeca66f67d083f270cba25df">v_vec</a> = tmp_particles.at(i).v_vec + dt*k_v[2*size + i];</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> p-&gt;<a class="code hl_variable" href="classParticle.html#acf1a0f3c978b06d76df5bb4279594467">r_vec</a> = tmp_particles.at(i).r_vec + dt*k_r[2*size + i];</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> }</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> </div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> </div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i&lt;size; i++) {</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> k_v[3*size + i] = this-&gt;<a class="code hl_function" href="classPenningTrap.html#a83cc7a04dae009ed8e75453c38fdf8be">total_force</a>(i)/this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">particles</a>.at(i).m;</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> k_r[3*size + i] = this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">particles</a>.at(i).v_vec;</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> }</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> </div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i&lt;size; i++) {</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> <a class="code hl_class" href="classParticle.html">Particle</a> *p = &amp;this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">particles</a>.at(i);</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> </div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> p-&gt;<a class="code hl_variable" href="classParticle.html#a4a5d22c7aeca66f67d083f270cba25df">v_vec</a> = tmp_particles.at(i).v_vec + dt*(k_v[i] + k_v[size + i] + k_v[2*size + i] + k_v[3*size + i])/6;</div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> p-&gt;<a class="code hl_variable" href="classParticle.html#acf1a0f3c978b06d76df5bb4279594467">r_vec</a> = tmp_particles.at(i).r_vec + dt*(k_r[i] + k_r[size + i] + k_r[2*size + i] + k_r[3*size + i])/6;</div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> }</div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> </div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> <span class="keyword">delete</span> [] k_v;</div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> <span class="keyword">delete</span> [] k_r;</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span>}</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> </div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"><a class="line" href="classPenningTrap.html#a56544b6f4befb42984e9650cf2a40965"> 167</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="classPenningTrap.html#a56544b6f4befb42984e9650cf2a40965">PenningTrap::evolve_forward_euler</a>(<span class="keywordtype">double</span> dt)</div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span>{</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> std::vector&lt;Particle&gt; new_state = this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">particles</a>;</div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> </div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> <a class="code hl_class" href="classParticle.html">Particle</a> *p;</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> </div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span><span class="preprocessor">#pragma omp parallel for private(p)</span></div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">particles</a>.size(); i++) {</div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> p = &amp;new_state.at(i);</div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> p-&gt;<a class="code hl_variable" href="classParticle.html#a4a5d22c7aeca66f67d083f270cba25df">v_vec</a> += dt * this-&gt;<a class="code hl_function" href="classPenningTrap.html#a83cc7a04dae009ed8e75453c38fdf8be">total_force</a>(i) / new_state.at(i).m;</div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> p-&gt;<a class="code hl_variable" href="classParticle.html#acf1a0f3c978b06d76df5bb4279594467">r_vec</a> += dt * this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">particles</a>.at(i).v_vec;</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> }</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> </div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">particles</a> = new_state;</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span>}</div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> </div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span>arma::vec PenningTrap::get_particle(<span class="keywordtype">int</span> i)</div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span>{</div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> <span class="keywordflow">return</span> this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">particles</a>.at(i).r_vec;</div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span>}</div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> </div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span><span class="keywordtype">double</span> PenningTrap::get_d()</div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span>{</div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> <span class="keywordflow">return</span> this-&gt;<a class="code hl_variable" href="classPenningTrap.html#a66dfe89c68716b9502927b97f59c27d2">d</a>;</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span>}</div>
<div class="ttc" id="aPenningTrap_8hpp_html"><div class="ttname"><a href="PenningTrap_8hpp.html">PenningTrap.hpp</a></div><div class="ttdoc">A class for simulating a Penning trap.</div></div>
<div class="ttc" id="aclassParticle_html"><div class="ttname"><a href="classParticle.html">Particle</a></div><div class="ttdoc">A class that holds attributes of a particle.</div><div class="ttdef"><b>Definition:</b> <a href="Particle_8hpp_source.html#l00019">Particle.hpp:19</a></div></div>
<div class="ttc" id="aclassParticle_html_a4a5d22c7aeca66f67d083f270cba25df"><div class="ttname"><a href="classParticle.html#a4a5d22c7aeca66f67d083f270cba25df">Particle::v_vec</a></div><div class="ttdeci">arma::vec::fixed&lt; 3 &gt; v_vec</div><div class="ttdoc">velocity</div><div class="ttdef"><b>Definition:</b> <a href="Particle_8hpp_source.html#l00024">Particle.hpp:24</a></div></div>
<div class="ttc" id="aclassParticle_html_a566dcc1de4bdc01251776948798ea8e1"><div class="ttname"><a href="classParticle.html#a566dcc1de4bdc01251776948798ea8e1">Particle::q</a></div><div class="ttdeci">double q</div><div class="ttdoc">Charge.</div><div class="ttdef"><b>Definition:</b> <a href="Particle_8hpp_source.html#l00021">Particle.hpp:21</a></div></div>
<div class="ttc" id="aclassParticle_html_acf1a0f3c978b06d76df5bb4279594467"><div class="ttname"><a href="classParticle.html#acf1a0f3c978b06d76df5bb4279594467">Particle::r_vec</a></div><div class="ttdeci">arma::vec::fixed&lt; 3 &gt; r_vec</div><div class="ttdoc">position</div><div class="ttdef"><b>Definition:</b> <a href="Particle_8hpp_source.html#l00023">Particle.hpp:23</a></div></div>
<div class="ttc" id="aclassParticle_html_aedcc7e1bc53b0e2b1a4a07c9a1b47563"><div class="ttname"><a href="classParticle.html#aedcc7e1bc53b0e2b1a4a07c9a1b47563">Particle::m</a></div><div class="ttdeci">double m</div><div class="ttdoc">Mass.</div><div class="ttdef"><b>Definition:</b> <a href="Particle_8hpp_source.html#l00022">Particle.hpp:22</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a0112525d9e79a472e761f8ef402a339f"><div class="ttname"><a href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">PenningTrap::particles</a></div><div class="ttdeci">std::vector&lt; Particle &gt; particles</div><div class="ttdoc">The particles in the Penning trap.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8hpp_source.html#l00030">PenningTrap.hpp:30</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a045adb85e97a8e0c38fb36d2fd74eeee"><div class="ttname"><a href="classPenningTrap.html#a045adb85e97a8e0c38fb36d2fd74eeee">PenningTrap::total_force_external</a></div><div class="ttdeci">arma::vec total_force_external(int i)</div><div class="ttdoc">Calculate the total external force on a particle.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00074">PenningTrap.cpp:74</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a0cac3509aa96e71a26d3b2c902e27716"><div class="ttname"><a href="classPenningTrap.html#a0cac3509aa96e71a26d3b2c902e27716">PenningTrap::B_0</a></div><div class="ttdeci">double B_0</div><div class="ttdoc">Magnetic field strength.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8hpp_source.html#l00027">PenningTrap.hpp:27</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a135db7d991d9b88b00fde4edee71f78d"><div class="ttname"><a href="classPenningTrap.html#a135db7d991d9b88b00fde4edee71f78d">PenningTrap::total_force_particles</a></div><div class="ttdeci">arma::vec total_force_particles(int i)</div><div class="ttdoc">Calculate the total force on a particle from other particles.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00092">PenningTrap.cpp:92</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a2a3e7f480ba52e9f24d4c50c3981a784"><div class="ttname"><a href="classPenningTrap.html#a2a3e7f480ba52e9f24d4c50c3981a784">PenningTrap::external_B_field</a></div><div class="ttdeci">arma::vec external_B_field(arma::vec r)</div><div class="ttdoc">Calculate B at point r.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00049">PenningTrap.cpp:49</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a4790f41e4fbc6ede4991aa7bbda92182"><div class="ttname"><a href="classPenningTrap.html#a4790f41e4fbc6ede4991aa7bbda92182">PenningTrap::force_on_particle</a></div><div class="ttdeci">arma::vec force_on_particle(int i, int j)</div><div class="ttdoc">Calculate the force between 2 particles.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00059">PenningTrap.cpp:59</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a56544b6f4befb42984e9650cf2a40965"><div class="ttname"><a href="classPenningTrap.html#a56544b6f4befb42984e9650cf2a40965">PenningTrap::evolve_forward_euler</a></div><div class="ttdeci">void evolve_forward_euler(double dt)</div><div class="ttdoc">Go forward one timestep using the forward Euler method.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00121">PenningTrap.cpp:121</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a66dfe89c68716b9502927b97f59c27d2"><div class="ttname"><a href="classPenningTrap.html#a66dfe89c68716b9502927b97f59c27d2">PenningTrap::d</a></div><div class="ttdeci">double d</div><div class="ttdoc">Characteristic dimension.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8hpp_source.html#l00029">PenningTrap.hpp:29</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a6e9776ff5b149f01080800716455d7c8"><div class="ttname"><a href="classPenningTrap.html#a6e9776ff5b149f01080800716455d7c8">PenningTrap::add_particle</a></div><div class="ttdeci">void add_particle(Particle particle)</div><div class="ttdoc">Add a particle to the system.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00033">PenningTrap.cpp:33</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a715329844d75ec4c04f8391421fb4e89"><div class="ttname"><a href="classPenningTrap.html#a715329844d75ec4c04f8391421fb4e89">PenningTrap::V_0</a></div><div class="ttdeci">double V_0</div><div class="ttdoc">Applied potential.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8hpp_source.html#l00028">PenningTrap.hpp:28</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a81add5063bd5f29d77f0b5c299c6c560"><div class="ttname"><a href="classPenningTrap.html#a81add5063bd5f29d77f0b5c299c6c560">PenningTrap::PenningTrap</a></div><div class="ttdeci">PenningTrap(double B_0=T, double V_0=25.*V/1000., double d=500.)</div><div class="ttdoc">Set B_0, V_0 and d.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00026">PenningTrap.cpp:26</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a83cc7a04dae009ed8e75453c38fdf8be"><div class="ttname"><a href="classPenningTrap.html#a83cc7a04dae009ed8e75453c38fdf8be">PenningTrap::total_force</a></div><div class="ttdeci">arma::vec total_force(int i)</div><div class="ttdoc">calculate the total force on a particle.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00111">PenningTrap.cpp:111</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a978a2e2026a4b5308d5184712f81704b"><div class="ttname"><a href="classPenningTrap.html#a978a2e2026a4b5308d5184712f81704b">PenningTrap::external_E_field</a></div><div class="ttdeci">arma::vec external_E_field(arma::vec r)</div><div class="ttdoc">Calculate E at point r.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00038">PenningTrap.cpp:38</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_ab891b839c40eeb38d8a2a636c70090a9"><div class="ttname"><a href="classPenningTrap.html#ab891b839c40eeb38d8a2a636c70090a9">PenningTrap::evolve_RK4</a></div><div class="ttdeci">void evolve_RK4(double dt)</div><div class="ttdoc">Go forward one timestep using the RK4 method.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00116">PenningTrap.cpp:116</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a0112525d9e79a472e761f8ef402a339f"><div class="ttname"><a href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">PenningTrap::particles</a></div><div class="ttdeci">std::vector&lt; Particle &gt; particles</div><div class="ttdoc">The particles in the Penning trap.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8hpp_source.html#l00034">PenningTrap.hpp:34</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a045adb85e97a8e0c38fb36d2fd74eeee"><div class="ttname"><a href="classPenningTrap.html#a045adb85e97a8e0c38fb36d2fd74eeee">PenningTrap::total_force_external</a></div><div class="ttdeci">arma::vec total_force_external(int i)</div><div class="ttdoc">Calculate the total external force on a particle.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00065">PenningTrap.cpp:65</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a0cac3509aa96e71a26d3b2c902e27716"><div class="ttname"><a href="classPenningTrap.html#a0cac3509aa96e71a26d3b2c902e27716">PenningTrap::B_0</a></div><div class="ttdeci">double B_0</div><div class="ttdoc">Magnetic field strength.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8hpp_source.html#l00031">PenningTrap.hpp:31</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a135db7d991d9b88b00fde4edee71f78d"><div class="ttname"><a href="classPenningTrap.html#a135db7d991d9b88b00fde4edee71f78d">PenningTrap::total_force_particles</a></div><div class="ttdeci">arma::vec total_force_particles(int i)</div><div class="ttdoc">Calculate the total force on a particle from other particles.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00080">PenningTrap.cpp:80</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a2a3e7f480ba52e9f24d4c50c3981a784"><div class="ttname"><a href="classPenningTrap.html#a2a3e7f480ba52e9f24d4c50c3981a784">PenningTrap::external_B_field</a></div><div class="ttdeci">arma::vec external_B_field(arma::vec r)</div><div class="ttdoc">Calculate B at point r.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00043">PenningTrap.cpp:43</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a4790f41e4fbc6ede4991aa7bbda92182"><div class="ttname"><a href="classPenningTrap.html#a4790f41e4fbc6ede4991aa7bbda92182">PenningTrap::force_on_particle</a></div><div class="ttdeci">arma::vec force_on_particle(int i, int j)</div><div class="ttdoc">Calculate the force between 2 particles.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00050">PenningTrap.cpp:50</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a56544b6f4befb42984e9650cf2a40965"><div class="ttname"><a href="classPenningTrap.html#a56544b6f4befb42984e9650cf2a40965">PenningTrap::evolve_forward_euler</a></div><div class="ttdeci">void evolve_forward_euler(double dt)</div><div class="ttdoc">Go forward one timestep using the forward Euler method.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00167">PenningTrap.cpp:167</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a66dfe89c68716b9502927b97f59c27d2"><div class="ttname"><a href="classPenningTrap.html#a66dfe89c68716b9502927b97f59c27d2">PenningTrap::d</a></div><div class="ttdeci">double d</div><div class="ttdoc">Characteristic dimension.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8hpp_source.html#l00033">PenningTrap.hpp:33</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a6e9776ff5b149f01080800716455d7c8"><div class="ttname"><a href="classPenningTrap.html#a6e9776ff5b149f01080800716455d7c8">PenningTrap::add_particle</a></div><div class="ttdeci">void add_particle(Particle particle)</div><div class="ttdoc">Add a particle to the system.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00027">PenningTrap.cpp:27</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a715329844d75ec4c04f8391421fb4e89"><div class="ttname"><a href="classPenningTrap.html#a715329844d75ec4c04f8391421fb4e89">PenningTrap::V_0</a></div><div class="ttdeci">double V_0</div><div class="ttdoc">Applied potential.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8hpp_source.html#l00032">PenningTrap.hpp:32</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a81add5063bd5f29d77f0b5c299c6c560"><div class="ttname"><a href="classPenningTrap.html#a81add5063bd5f29d77f0b5c299c6c560">PenningTrap::PenningTrap</a></div><div class="ttdeci">PenningTrap(double B_0=T, double V_0=25.*V/1000., double d=500.)</div><div class="ttdoc">Set B_0, V_0 and d.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00020">PenningTrap.cpp:20</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a83cc7a04dae009ed8e75453c38fdf8be"><div class="ttname"><a href="classPenningTrap.html#a83cc7a04dae009ed8e75453c38fdf8be">PenningTrap::total_force</a></div><div class="ttdeci">arma::vec total_force(int i)</div><div class="ttdoc">calculate the total force on a particle.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00099">PenningTrap.cpp:99</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a978a2e2026a4b5308d5184712f81704b"><div class="ttname"><a href="classPenningTrap.html#a978a2e2026a4b5308d5184712f81704b">PenningTrap::external_E_field</a></div><div class="ttdeci">arma::vec external_E_field(arma::vec r)</div><div class="ttdoc">Calculate E at point r.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00032">PenningTrap.cpp:32</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_ab891b839c40eeb38d8a2a636c70090a9"><div class="ttname"><a href="classPenningTrap.html#ab891b839c40eeb38d8a2a636c70090a9">PenningTrap::evolve_RK4</a></div><div class="ttdeci">void evolve_RK4(double dt)</div><div class="ttdoc">Go forward one timestep using the RK4 method.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00104">PenningTrap.cpp:104</a></div></div>
<div class="ttc" id="aconstants_8hpp_html"><div class="ttname"><a href="constants_8hpp.html">constants.hpp</a></div><div class="ttdoc">Library of constants.</div></div>
<div class="ttc" id="aconstants_8hpp_html_a4e451456ad7e9276ed0afa42826e7ccb"><div class="ttname"><a href="constants_8hpp.html#a4e451456ad7e9276ed0afa42826e7ccb">K_E</a></div><div class="ttdeci">#define K_E</div><div class="ttdoc">Coulomb constant. unit: .</div><div class="ttdef"><b>Definition:</b> <a href="constants_8hpp_source.html#l00015">constants.hpp:15</a></div></div>
<div class="ttc" id="autils_8hpp_html"><div class="ttname"><a href="utils_8hpp.html">utils.hpp</a></div><div class="ttdoc">Function prototypes and macros that are useful.</div></div>

View File

@ -107,8 +107,9 @@ $(document).ready(function(){initNavTree('PenningTrap_8hpp.html',''); initResiza
<p>A class for simulating a Penning trap.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &lt;armadillo&gt;</code><br />
<code>#include &quot;<a class="el" href="constants_8hpp_source.html">constants.hpp</a>&quot;</code><br />
<code>#include &lt;omp.h&gt;</code><br />
<code>#include &quot;<a class="el" href="Particle_8hpp_source.html">Particle.hpp</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="constants_8hpp_source.html">constants.hpp</a>&quot;</code><br />
</div>
<p><a href="PenningTrap_8hpp_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">

View File

@ -106,60 +106,64 @@ $(document).ready(function(){initNavTree('PenningTrap_8hpp_source.html',''); ini
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="preprocessor">#define __PENNING_TRAP__</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span> </div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="preprocessor">#include &lt;armadillo&gt;</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span> </div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="preprocessor">#include &quot;<a class="code" href="constants_8hpp.html">constants.hpp</a>&quot;</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="preprocessor">#include &lt;omp.h&gt;</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span> </div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="preprocessor">#include &quot;<a class="code" href="Particle_8hpp.html">Particle.hpp</a>&quot;</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> </div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"><a class="line" href="classPenningTrap.html"> 25</a></span><span class="keyword">class </span><a class="code hl_class" href="classPenningTrap.html">PenningTrap</a> {</div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"><a class="line" href="classPenningTrap.html#a0cac3509aa96e71a26d3b2c902e27716"> 27</a></span> <span class="keywordtype">double</span> <a class="code hl_variable" href="classPenningTrap.html#a0cac3509aa96e71a26d3b2c902e27716">B_0</a>; </div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"><a class="line" href="classPenningTrap.html#a715329844d75ec4c04f8391421fb4e89"> 28</a></span> <span class="keywordtype">double</span> <a class="code hl_variable" href="classPenningTrap.html#a715329844d75ec4c04f8391421fb4e89">V_0</a>; </div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"><a class="line" href="classPenningTrap.html#a66dfe89c68716b9502927b97f59c27d2"> 29</a></span> <span class="keywordtype">double</span> <a class="code hl_variable" href="classPenningTrap.html#a66dfe89c68716b9502927b97f59c27d2">d</a>; </div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"><a class="line" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f"> 30</a></span> std::vector&lt;Particle&gt; <a class="code hl_variable" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">particles</a>; </div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> </div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> <a class="code hl_class" href="classPenningTrap.html">PenningTrap</a>(<span class="keywordtype">double</span> <a class="code hl_variable" href="classPenningTrap.html#a0cac3509aa96e71a26d3b2c902e27716">B_0</a> = <a class="code hl_define" href="constants_8hpp.html#a0acb682b8260ab1c60b918599864e2e5">T</a>, <span class="keywordtype">double</span> <a class="code hl_variable" href="classPenningTrap.html#a715329844d75ec4c04f8391421fb4e89">V_0</a> = 25.*<a class="code hl_define" href="constants_8hpp.html#af40a326b23c68a27cebe60f16634a2cb">V</a>/1000., <span class="keywordtype">double</span> <a class="code hl_variable" href="classPenningTrap.html#a66dfe89c68716b9502927b97f59c27d2">d</a> = 500.);</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> </div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classPenningTrap.html#a6e9776ff5b149f01080800716455d7c8">add_particle</a>(<a class="code hl_class" href="classParticle.html">Particle</a> particle);</div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="preprocessor">#include &quot;<a class="code" href="constants_8hpp.html">constants.hpp</a>&quot;</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span> </div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="preprocessor">#pragma omp declare reduction( + : arma::vec : omp_out += omp_in ) \</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="preprocessor"> initializer( omp_priv = omp_orig )</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> </div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"><a class="line" href="classPenningTrap.html"> 29</a></span><span class="keyword">class </span><a class="code hl_class" href="classPenningTrap.html">PenningTrap</a> {</div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"><a class="line" href="classPenningTrap.html#a0cac3509aa96e71a26d3b2c902e27716"> 31</a></span> <span class="keywordtype">double</span> <a class="code hl_variable" href="classPenningTrap.html#a0cac3509aa96e71a26d3b2c902e27716">B_0</a>; </div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"><a class="line" href="classPenningTrap.html#a715329844d75ec4c04f8391421fb4e89"> 32</a></span> <span class="keywordtype">double</span> <a class="code hl_variable" href="classPenningTrap.html#a715329844d75ec4c04f8391421fb4e89">V_0</a>; </div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"><a class="line" href="classPenningTrap.html#a66dfe89c68716b9502927b97f59c27d2"> 33</a></span> <span class="keywordtype">double</span> <a class="code hl_variable" href="classPenningTrap.html#a66dfe89c68716b9502927b97f59c27d2">d</a>; </div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"><a class="line" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f"> 34</a></span> std::vector&lt;Particle&gt; <a class="code hl_variable" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">particles</a>; </div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> </div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> <a class="code hl_class" href="classPenningTrap.html">PenningTrap</a>(<span class="keywordtype">double</span> <a class="code hl_variable" href="classPenningTrap.html#a0cac3509aa96e71a26d3b2c902e27716">B_0</a> = <a class="code hl_define" href="constants_8hpp.html#a0acb682b8260ab1c60b918599864e2e5">T</a>, <span class="keywordtype">double</span> <a class="code hl_variable" href="classPenningTrap.html#a715329844d75ec4c04f8391421fb4e89">V_0</a> = 25.*<a class="code hl_define" href="constants_8hpp.html#af40a326b23c68a27cebe60f16634a2cb">V</a>/1000., <span class="keywordtype">double</span> <a class="code hl_variable" href="classPenningTrap.html#a66dfe89c68716b9502927b97f59c27d2">d</a> = 500.);</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> </div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> arma::vec <a class="code hl_function" href="classPenningTrap.html#a978a2e2026a4b5308d5184712f81704b">external_E_field</a>(arma::vec r);</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classPenningTrap.html#a6e9776ff5b149f01080800716455d7c8">add_particle</a>(<a class="code hl_class" href="classParticle.html">Particle</a> particle);</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> </div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> arma::vec <a class="code hl_function" href="classPenningTrap.html#a2a3e7f480ba52e9f24d4c50c3981a784">external_B_field</a>(arma::vec r);</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> arma::vec <a class="code hl_function" href="classPenningTrap.html#a978a2e2026a4b5308d5184712f81704b">external_E_field</a>(arma::vec r);</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> </div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> arma::vec <a class="code hl_function" href="classPenningTrap.html#a4790f41e4fbc6ede4991aa7bbda92182">force_on_particle</a>(<span class="keywordtype">int</span> i, <span class="keywordtype">int</span> j);</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> </div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> arma::vec <a class="code hl_function" href="classPenningTrap.html#a045adb85e97a8e0c38fb36d2fd74eeee">total_force_external</a>(<span class="keywordtype">int</span> i);</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> </div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> arma::vec <a class="code hl_function" href="classPenningTrap.html#a135db7d991d9b88b00fde4edee71f78d">total_force_particles</a>(<span class="keywordtype">int</span> i);</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> arma::vec <a class="code hl_function" href="classPenningTrap.html#a2a3e7f480ba52e9f24d4c50c3981a784">external_B_field</a>(arma::vec r);</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> </div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> arma::vec <a class="code hl_function" href="classPenningTrap.html#a4790f41e4fbc6ede4991aa7bbda92182">force_on_particle</a>(<span class="keywordtype">int</span> i, <span class="keywordtype">int</span> j);</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> </div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> arma::vec <a class="code hl_function" href="classPenningTrap.html#a045adb85e97a8e0c38fb36d2fd74eeee">total_force_external</a>(<span class="keywordtype">int</span> i);</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> </div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> arma::vec <a class="code hl_function" href="classPenningTrap.html#a83cc7a04dae009ed8e75453c38fdf8be">total_force</a>(<span class="keywordtype">int</span> i);</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> arma::vec <a class="code hl_function" href="classPenningTrap.html#a135db7d991d9b88b00fde4edee71f78d">total_force_particles</a>(<span class="keywordtype">int</span> i);</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> </div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classPenningTrap.html#ab891b839c40eeb38d8a2a636c70090a9">evolve_RK4</a>(<span class="keywordtype">double</span> dt);</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> arma::vec <a class="code hl_function" href="classPenningTrap.html#a83cc7a04dae009ed8e75453c38fdf8be">total_force</a>(<span class="keywordtype">int</span> i);</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> </div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classPenningTrap.html#a56544b6f4befb42984e9650cf2a40965">evolve_forward_euler</a>(<span class="keywordtype">double</span> dt);</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classPenningTrap.html#ab891b839c40eeb38d8a2a636c70090a9">evolve_RK4</a>(<span class="keywordtype">double</span> dt);</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> </div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> arma::vec get_particle(<span class="keywordtype">int</span> i);</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> </div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> <span class="keywordtype">double</span> get_d();</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span>};</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> </div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classPenningTrap.html#a56544b6f4befb42984e9650cf2a40965">evolve_forward_euler</a>(<span class="keywordtype">double</span> dt);</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> </div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> arma::vec get_particle(<span class="keywordtype">int</span> i);</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> </div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> <span class="keywordtype">double</span> get_d();</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span>};</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> </div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span><span class="preprocessor">#endif</span></div>
<div class="ttc" id="aParticle_8hpp_html"><div class="ttname"><a href="Particle_8hpp.html">Particle.hpp</a></div><div class="ttdoc">A class that holds the properties of a particle.</div></div>
<div class="ttc" id="aclassParticle_html"><div class="ttname"><a href="classParticle.html">Particle</a></div><div class="ttdoc">A class that holds attributes of a particle.</div><div class="ttdef"><b>Definition:</b> <a href="Particle_8hpp_source.html#l00019">Particle.hpp:19</a></div></div>
<div class="ttc" id="aclassPenningTrap_html"><div class="ttname"><a href="classPenningTrap.html">PenningTrap</a></div><div class="ttdoc">A class that simulates a Penning trap.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8hpp_source.html#l00025">PenningTrap.hpp:25</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a0112525d9e79a472e761f8ef402a339f"><div class="ttname"><a href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">PenningTrap::particles</a></div><div class="ttdeci">std::vector&lt; Particle &gt; particles</div><div class="ttdoc">The particles in the Penning trap.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8hpp_source.html#l00030">PenningTrap.hpp:30</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a045adb85e97a8e0c38fb36d2fd74eeee"><div class="ttname"><a href="classPenningTrap.html#a045adb85e97a8e0c38fb36d2fd74eeee">PenningTrap::total_force_external</a></div><div class="ttdeci">arma::vec total_force_external(int i)</div><div class="ttdoc">Calculate the total external force on a particle.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00074">PenningTrap.cpp:74</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a0cac3509aa96e71a26d3b2c902e27716"><div class="ttname"><a href="classPenningTrap.html#a0cac3509aa96e71a26d3b2c902e27716">PenningTrap::B_0</a></div><div class="ttdeci">double B_0</div><div class="ttdoc">Magnetic field strength.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8hpp_source.html#l00027">PenningTrap.hpp:27</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a135db7d991d9b88b00fde4edee71f78d"><div class="ttname"><a href="classPenningTrap.html#a135db7d991d9b88b00fde4edee71f78d">PenningTrap::total_force_particles</a></div><div class="ttdeci">arma::vec total_force_particles(int i)</div><div class="ttdoc">Calculate the total force on a particle from other particles.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00092">PenningTrap.cpp:92</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a2a3e7f480ba52e9f24d4c50c3981a784"><div class="ttname"><a href="classPenningTrap.html#a2a3e7f480ba52e9f24d4c50c3981a784">PenningTrap::external_B_field</a></div><div class="ttdeci">arma::vec external_B_field(arma::vec r)</div><div class="ttdoc">Calculate B at point r.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00049">PenningTrap.cpp:49</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a4790f41e4fbc6ede4991aa7bbda92182"><div class="ttname"><a href="classPenningTrap.html#a4790f41e4fbc6ede4991aa7bbda92182">PenningTrap::force_on_particle</a></div><div class="ttdeci">arma::vec force_on_particle(int i, int j)</div><div class="ttdoc">Calculate the force between 2 particles.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00059">PenningTrap.cpp:59</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a56544b6f4befb42984e9650cf2a40965"><div class="ttname"><a href="classPenningTrap.html#a56544b6f4befb42984e9650cf2a40965">PenningTrap::evolve_forward_euler</a></div><div class="ttdeci">void evolve_forward_euler(double dt)</div><div class="ttdoc">Go forward one timestep using the forward Euler method.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00121">PenningTrap.cpp:121</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a66dfe89c68716b9502927b97f59c27d2"><div class="ttname"><a href="classPenningTrap.html#a66dfe89c68716b9502927b97f59c27d2">PenningTrap::d</a></div><div class="ttdeci">double d</div><div class="ttdoc">Characteristic dimension.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8hpp_source.html#l00029">PenningTrap.hpp:29</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a6e9776ff5b149f01080800716455d7c8"><div class="ttname"><a href="classPenningTrap.html#a6e9776ff5b149f01080800716455d7c8">PenningTrap::add_particle</a></div><div class="ttdeci">void add_particle(Particle particle)</div><div class="ttdoc">Add a particle to the system.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00033">PenningTrap.cpp:33</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a715329844d75ec4c04f8391421fb4e89"><div class="ttname"><a href="classPenningTrap.html#a715329844d75ec4c04f8391421fb4e89">PenningTrap::V_0</a></div><div class="ttdeci">double V_0</div><div class="ttdoc">Applied potential.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8hpp_source.html#l00028">PenningTrap.hpp:28</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a83cc7a04dae009ed8e75453c38fdf8be"><div class="ttname"><a href="classPenningTrap.html#a83cc7a04dae009ed8e75453c38fdf8be">PenningTrap::total_force</a></div><div class="ttdeci">arma::vec total_force(int i)</div><div class="ttdoc">calculate the total force on a particle.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00111">PenningTrap.cpp:111</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a978a2e2026a4b5308d5184712f81704b"><div class="ttname"><a href="classPenningTrap.html#a978a2e2026a4b5308d5184712f81704b">PenningTrap::external_E_field</a></div><div class="ttdeci">arma::vec external_E_field(arma::vec r)</div><div class="ttdoc">Calculate E at point r.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00038">PenningTrap.cpp:38</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_ab891b839c40eeb38d8a2a636c70090a9"><div class="ttname"><a href="classPenningTrap.html#ab891b839c40eeb38d8a2a636c70090a9">PenningTrap::evolve_RK4</a></div><div class="ttdeci">void evolve_RK4(double dt)</div><div class="ttdoc">Go forward one timestep using the RK4 method.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00116">PenningTrap.cpp:116</a></div></div>
<div class="ttc" id="aclassPenningTrap_html"><div class="ttname"><a href="classPenningTrap.html">PenningTrap</a></div><div class="ttdoc">A class that simulates a Penning trap.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8hpp_source.html#l00029">PenningTrap.hpp:29</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a0112525d9e79a472e761f8ef402a339f"><div class="ttname"><a href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">PenningTrap::particles</a></div><div class="ttdeci">std::vector&lt; Particle &gt; particles</div><div class="ttdoc">The particles in the Penning trap.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8hpp_source.html#l00034">PenningTrap.hpp:34</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a045adb85e97a8e0c38fb36d2fd74eeee"><div class="ttname"><a href="classPenningTrap.html#a045adb85e97a8e0c38fb36d2fd74eeee">PenningTrap::total_force_external</a></div><div class="ttdeci">arma::vec total_force_external(int i)</div><div class="ttdoc">Calculate the total external force on a particle.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00065">PenningTrap.cpp:65</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a0cac3509aa96e71a26d3b2c902e27716"><div class="ttname"><a href="classPenningTrap.html#a0cac3509aa96e71a26d3b2c902e27716">PenningTrap::B_0</a></div><div class="ttdeci">double B_0</div><div class="ttdoc">Magnetic field strength.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8hpp_source.html#l00031">PenningTrap.hpp:31</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a135db7d991d9b88b00fde4edee71f78d"><div class="ttname"><a href="classPenningTrap.html#a135db7d991d9b88b00fde4edee71f78d">PenningTrap::total_force_particles</a></div><div class="ttdeci">arma::vec total_force_particles(int i)</div><div class="ttdoc">Calculate the total force on a particle from other particles.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00080">PenningTrap.cpp:80</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a2a3e7f480ba52e9f24d4c50c3981a784"><div class="ttname"><a href="classPenningTrap.html#a2a3e7f480ba52e9f24d4c50c3981a784">PenningTrap::external_B_field</a></div><div class="ttdeci">arma::vec external_B_field(arma::vec r)</div><div class="ttdoc">Calculate B at point r.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00043">PenningTrap.cpp:43</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a4790f41e4fbc6ede4991aa7bbda92182"><div class="ttname"><a href="classPenningTrap.html#a4790f41e4fbc6ede4991aa7bbda92182">PenningTrap::force_on_particle</a></div><div class="ttdeci">arma::vec force_on_particle(int i, int j)</div><div class="ttdoc">Calculate the force between 2 particles.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00050">PenningTrap.cpp:50</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a56544b6f4befb42984e9650cf2a40965"><div class="ttname"><a href="classPenningTrap.html#a56544b6f4befb42984e9650cf2a40965">PenningTrap::evolve_forward_euler</a></div><div class="ttdeci">void evolve_forward_euler(double dt)</div><div class="ttdoc">Go forward one timestep using the forward Euler method.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00167">PenningTrap.cpp:167</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a66dfe89c68716b9502927b97f59c27d2"><div class="ttname"><a href="classPenningTrap.html#a66dfe89c68716b9502927b97f59c27d2">PenningTrap::d</a></div><div class="ttdeci">double d</div><div class="ttdoc">Characteristic dimension.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8hpp_source.html#l00033">PenningTrap.hpp:33</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a6e9776ff5b149f01080800716455d7c8"><div class="ttname"><a href="classPenningTrap.html#a6e9776ff5b149f01080800716455d7c8">PenningTrap::add_particle</a></div><div class="ttdeci">void add_particle(Particle particle)</div><div class="ttdoc">Add a particle to the system.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00027">PenningTrap.cpp:27</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a715329844d75ec4c04f8391421fb4e89"><div class="ttname"><a href="classPenningTrap.html#a715329844d75ec4c04f8391421fb4e89">PenningTrap::V_0</a></div><div class="ttdeci">double V_0</div><div class="ttdoc">Applied potential.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8hpp_source.html#l00032">PenningTrap.hpp:32</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a83cc7a04dae009ed8e75453c38fdf8be"><div class="ttname"><a href="classPenningTrap.html#a83cc7a04dae009ed8e75453c38fdf8be">PenningTrap::total_force</a></div><div class="ttdeci">arma::vec total_force(int i)</div><div class="ttdoc">calculate the total force on a particle.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00099">PenningTrap.cpp:99</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a978a2e2026a4b5308d5184712f81704b"><div class="ttname"><a href="classPenningTrap.html#a978a2e2026a4b5308d5184712f81704b">PenningTrap::external_E_field</a></div><div class="ttdeci">arma::vec external_E_field(arma::vec r)</div><div class="ttdoc">Calculate E at point r.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00032">PenningTrap.cpp:32</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_ab891b839c40eeb38d8a2a636c70090a9"><div class="ttname"><a href="classPenningTrap.html#ab891b839c40eeb38d8a2a636c70090a9">PenningTrap::evolve_RK4</a></div><div class="ttdeci">void evolve_RK4(double dt)</div><div class="ttdoc">Go forward one timestep using the RK4 method.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00104">PenningTrap.cpp:104</a></div></div>
<div class="ttc" id="aconstants_8hpp_html"><div class="ttname"><a href="constants_8hpp.html">constants.hpp</a></div><div class="ttdoc">Library of constants.</div></div>
<div class="ttc" id="aconstants_8hpp_html_a0acb682b8260ab1c60b918599864e2e5"><div class="ttname"><a href="constants_8hpp.html#a0acb682b8260ab1c60b918599864e2e5">T</a></div><div class="ttdeci">#define T</div><div class="ttdoc">1 Tesla. unit:</div><div class="ttdef"><b>Definition:</b> <a href="constants_8hpp_source.html#l00017">constants.hpp:17</a></div></div>
<div class="ttc" id="aconstants_8hpp_html_af40a326b23c68a27cebe60f16634a2cb"><div class="ttname"><a href="constants_8hpp.html#af40a326b23c68a27cebe60f16634a2cb">V</a></div><div class="ttdeci">#define V</div><div class="ttdoc">1 Volt. unit:</div><div class="ttdef"><b>Definition:</b> <a href="constants_8hpp_source.html#l00019">constants.hpp:19</a></div></div>

View File

@ -0,0 +1,178 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.6"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Penning Trap Simulation: src/animate_100_particles.py 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="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.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>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script type="text/javascript" async="async" src="https://cdn.jsdelivr.net/npm/mathjax@2/MathJax.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygen-awesome.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 id="projectrow">
<td id="projectalign">
<div id="projectname">Penning Trap Simulation
</div>
<div id="projectbrief">Simulate particle behavior inside a Penning Trap</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.6 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('animate__100__particles_8py_source.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- 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">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">animate_100_particles.py</div></div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="keyword">import</span> matplotlib.pyplot <span class="keyword">as</span> plt</div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="keyword">import</span> numpy <span class="keyword">as</span> np</div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="keyword">from</span> mpl_toolkits.mplot3d <span class="keyword">import</span> Axes3D</div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="keyword">from</span> matplotlib <span class="keyword">import</span> animation</div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span> </div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="keyword">def </span>get_data(files):</div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span> res = []</div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span> <span class="keywordflow">for</span> file <span class="keywordflow">in</span> files:</div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span> arr = [[], [], []]</div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span> <span class="keyword">with</span> open(file, encoding=<span class="stringliteral">&quot;utf8&quot;</span>) <span class="keyword">as</span> f:</div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span> lines = f.readlines()</div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span> </div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span> <span class="keywordflow">for</span> line <span class="keywordflow">in</span> lines:</div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span> xi,yi,zi = map(float, line.strip().split(<span class="stringliteral">&quot;,&quot;</span>))</div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span> arr[0].append(xi)</div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span> arr[1].append(yi)</div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span> arr[2].append(zi)</div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span> res.append(arr)</div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> </div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span> <span class="keywordflow">return</span> np.array(res)</div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span> </div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="keyword">def </span>update(num, lines, arr):</div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> <span class="keywordflow">for</span> line, a <span class="keywordflow">in</span> zip(lines, arr):</div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> line.set_data(a[:2, num])</div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> line.set_3d_properties(a[2, num])</div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> </div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> </div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> </div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="keyword">def </span>animate():</div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> plt.style.use(<span class="stringliteral">&quot;dark_background&quot;</span>)</div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> fig = plt.figure()</div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> ax = fig.add_subplot(projection=<span class="stringliteral">&quot;3d&quot;</span>)</div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> </div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> </div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> arr = get_data([f<span class="stringliteral">&quot;output/p{i}_RK4.txt&quot;</span> <span class="keywordflow">for</span> i <span class="keywordflow">in</span> range(100)])</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> </div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> arr = arr[:,:,::10]</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> </div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> N = len(arr[0][0])</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> </div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> lines = [ax.plot(*a[:,1], <span class="stringliteral">&quot;o&quot;</span>)[0] <span class="keywordflow">for</span> a <span class="keywordflow">in</span> arr]</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> </div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> ax.set_xlim3d([-500.0, 500.0])</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> ax.set_xlabel(<span class="stringliteral">&#39;X&#39;</span>)</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> </div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> ax.set_ylim3d([-500.0, 500.0])</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> ax.set_ylabel(<span class="stringliteral">&#39;Y&#39;</span>)</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> </div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> ax.set_zlim3d([-500.0, 500.0])</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> ax.set_zlabel(<span class="stringliteral">&#39;Z&#39;</span>) </div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> </div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> ani = animation.FuncAnimation(fig, update, N, fargs=(lines, arr), </div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> interval=1,</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> blit=<span class="keyword">False</span>)</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> </div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> </div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> ani.save(<span class="stringliteral">&quot;100_particles.gif&quot;</span>, writer=animation.FFMpegFileWriter(fps=30))</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> plt.show()</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> </div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> </div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span><span class="keywordflow">if</span> __name__ == <span class="stringliteral">&quot;__main__&quot;</span>:</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> animate()</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> </div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> </div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><b>animate_100_particles.py</b></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.6 </li>
</ul>
</div>
</body>
</html>

View File

@ -105,6 +105,7 @@ $(document).ready(function(){initNavTree('annotated.html',''); initResizable();
<table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classParticle.html" target="_self">Particle</a></td><td class="desc">A class that holds attributes of a particle </td></tr>
<tr id="row_1_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classPenningTrap.html" target="_self">PenningTrap</a></td><td class="desc">A class that simulates a Penning trap </td></tr>
<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classPenningTrapTest.html" target="_self">PenningTrapTest</a></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->

View File

@ -1,5 +1,6 @@
var annotated_dup =
[
[ "Particle", "classParticle.html", "classParticle" ],
[ "PenningTrap", "classPenningTrap.html", "classPenningTrap" ]
[ "PenningTrap", "classPenningTrap.html", "classPenningTrap" ],
[ "PenningTrapTest", "classPenningTrapTest.html", null ]
];

View File

@ -167,7 +167,7 @@ Private Attributes</h2></td></tr>
<div class="textblock"><p>A class that simulates a Penning trap. </p>
<p>This class simulates a Penning trap. It can take in a number of particles and simulate how they would behave inside a Penning trap. </p>
<p class="definition">Definition at line <a class="el" href="PenningTrap_8hpp_source.html#l00025">25</a> of file <a class="el" href="PenningTrap_8hpp_source.html">PenningTrap.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="PenningTrap_8hpp_source.html#l00029">29</a> of file <a class="el" href="PenningTrap_8hpp_source.html">PenningTrap.hpp</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a81add5063bd5f29d77f0b5c299c6c560" name="a81add5063bd5f29d77f0b5c299c6c560"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a81add5063bd5f29d77f0b5c299c6c560">&#9670;&#160;</a></span>PenningTrap()</h2>
@ -203,7 +203,7 @@ Private Attributes</h2></td></tr>
<p>Set B_0, V_0 and d. </p>
<p class="definition">Definition at line <a class="el" href="PenningTrap_8cpp_source.html#l00026">26</a> of file <a class="el" href="PenningTrap_8cpp_source.html">PenningTrap.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="PenningTrap_8cpp_source.html#l00020">20</a> of file <a class="el" href="PenningTrap_8cpp_source.html">PenningTrap.cpp</a>.</p>
</div>
</div>
@ -226,7 +226,7 @@ Private Attributes</h2></td></tr>
<p>Add a particle to the system. </p>
<p class="definition">Definition at line <a class="el" href="PenningTrap_8cpp_source.html#l00033">33</a> of file <a class="el" href="PenningTrap_8cpp_source.html">PenningTrap.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="PenningTrap_8cpp_source.html#l00027">27</a> of file <a class="el" href="PenningTrap_8cpp_source.html">PenningTrap.cpp</a>.</p>
</div>
</div>
@ -248,7 +248,7 @@ Private Attributes</h2></td></tr>
<p>Go forward one timestep using the forward Euler method. </p>
<p class="definition">Definition at line <a class="el" href="PenningTrap_8cpp_source.html#l00121">121</a> of file <a class="el" href="PenningTrap_8cpp_source.html">PenningTrap.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="PenningTrap_8cpp_source.html#l00167">167</a> of file <a class="el" href="PenningTrap_8cpp_source.html">PenningTrap.cpp</a>.</p>
</div>
</div>
@ -270,7 +270,7 @@ Private Attributes</h2></td></tr>
<p>Go forward one timestep using the RK4 method. </p>
<p class="definition">Definition at line <a class="el" href="PenningTrap_8cpp_source.html#l00116">116</a> of file <a class="el" href="PenningTrap_8cpp_source.html">PenningTrap.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="PenningTrap_8cpp_source.html#l00104">104</a> of file <a class="el" href="PenningTrap_8cpp_source.html">PenningTrap.cpp</a>.</p>
</div>
</div>
@ -292,7 +292,7 @@ Private Attributes</h2></td></tr>
<p>Calculate B at point r. </p>
<p class="definition">Definition at line <a class="el" href="PenningTrap_8cpp_source.html#l00049">49</a> of file <a class="el" href="PenningTrap_8cpp_source.html">PenningTrap.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="PenningTrap_8cpp_source.html#l00043">43</a> of file <a class="el" href="PenningTrap_8cpp_source.html">PenningTrap.cpp</a>.</p>
</div>
</div>
@ -314,7 +314,7 @@ Private Attributes</h2></td></tr>
<p>Calculate E at point r. </p>
<p class="definition">Definition at line <a class="el" href="PenningTrap_8cpp_source.html#l00038">38</a> of file <a class="el" href="PenningTrap_8cpp_source.html">PenningTrap.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="PenningTrap_8cpp_source.html#l00032">32</a> of file <a class="el" href="PenningTrap_8cpp_source.html">PenningTrap.cpp</a>.</p>
</div>
</div>
@ -347,7 +347,7 @@ Private Attributes</h2></td></tr>
<p>Calculate the force between 2 particles. </p>
<p>Calculate the force exhibited on particle p_i from particle p_j. </p>
<p class="definition">Definition at line <a class="el" href="PenningTrap_8cpp_source.html#l00059">59</a> of file <a class="el" href="PenningTrap_8cpp_source.html">PenningTrap.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="PenningTrap_8cpp_source.html#l00050">50</a> of file <a class="el" href="PenningTrap_8cpp_source.html">PenningTrap.cpp</a>.</p>
</div>
</div>
@ -366,7 +366,7 @@ Private Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="PenningTrap_8cpp_source.html#l00142">142</a> of file <a class="el" href="PenningTrap_8cpp_source.html">PenningTrap.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="PenningTrap_8cpp_source.html#l00188">188</a> of file <a class="el" href="PenningTrap_8cpp_source.html">PenningTrap.cpp</a>.</p>
</div>
</div>
@ -386,7 +386,7 @@ Private Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="PenningTrap_8cpp_source.html#l00137">137</a> of file <a class="el" href="PenningTrap_8cpp_source.html">PenningTrap.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="PenningTrap_8cpp_source.html#l00183">183</a> of file <a class="el" href="PenningTrap_8cpp_source.html">PenningTrap.cpp</a>.</p>
</div>
</div>
@ -408,7 +408,7 @@ Private Attributes</h2></td></tr>
<p>calculate the total force on a particle. </p>
<p class="definition">Definition at line <a class="el" href="PenningTrap_8cpp_source.html#l00111">111</a> of file <a class="el" href="PenningTrap_8cpp_source.html">PenningTrap.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="PenningTrap_8cpp_source.html#l00099">99</a> of file <a class="el" href="PenningTrap_8cpp_source.html">PenningTrap.cpp</a>.</p>
</div>
</div>
@ -431,7 +431,7 @@ Private Attributes</h2></td></tr>
<p>Calculate the total external force on a particle. </p>
<p>Calculate the total amount of force that E and B exhibits on particle p_i. </p>
<p class="definition">Definition at line <a class="el" href="PenningTrap_8cpp_source.html#l00074">74</a> of file <a class="el" href="PenningTrap_8cpp_source.html">PenningTrap.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="PenningTrap_8cpp_source.html#l00065">65</a> of file <a class="el" href="PenningTrap_8cpp_source.html">PenningTrap.cpp</a>.</p>
</div>
</div>
@ -453,7 +453,7 @@ Private Attributes</h2></td></tr>
<p>Calculate the total force on a particle from other particles. </p>
<p class="definition">Definition at line <a class="el" href="PenningTrap_8cpp_source.html#l00092">92</a> of file <a class="el" href="PenningTrap_8cpp_source.html">PenningTrap.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="PenningTrap_8cpp_source.html#l00080">80</a> of file <a class="el" href="PenningTrap_8cpp_source.html">PenningTrap.cpp</a>.</p>
</div>
</div>
@ -480,7 +480,7 @@ Private Attributes</h2></td></tr>
<p>Magnetic field strength. </p>
<p class="definition">Definition at line <a class="el" href="PenningTrap_8hpp_source.html#l00027">27</a> of file <a class="el" href="PenningTrap_8hpp_source.html">PenningTrap.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="PenningTrap_8hpp_source.html#l00031">31</a> of file <a class="el" href="PenningTrap_8hpp_source.html">PenningTrap.hpp</a>.</p>
</div>
</div>
@ -506,7 +506,7 @@ Private Attributes</h2></td></tr>
<p>Characteristic dimension. </p>
<p class="definition">Definition at line <a class="el" href="PenningTrap_8hpp_source.html#l00029">29</a> of file <a class="el" href="PenningTrap_8hpp_source.html">PenningTrap.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="PenningTrap_8hpp_source.html#l00033">33</a> of file <a class="el" href="PenningTrap_8hpp_source.html">PenningTrap.hpp</a>.</p>
</div>
</div>
@ -532,7 +532,7 @@ Private Attributes</h2></td></tr>
<p>The particles in the Penning trap. </p>
<p class="definition">Definition at line <a class="el" href="PenningTrap_8hpp_source.html#l00030">30</a> of file <a class="el" href="PenningTrap_8hpp_source.html">PenningTrap.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="PenningTrap_8hpp_source.html#l00034">34</a> of file <a class="el" href="PenningTrap_8hpp_source.html">PenningTrap.hpp</a>.</p>
</div>
</div>
@ -558,7 +558,7 @@ Private Attributes</h2></td></tr>
<p>Applied potential. </p>
<p class="definition">Definition at line <a class="el" href="PenningTrap_8hpp_source.html#l00028">28</a> of file <a class="el" href="PenningTrap_8hpp_source.html">PenningTrap.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="PenningTrap_8hpp_source.html#l00032">32</a> of file <a class="el" href="PenningTrap_8hpp_source.html">PenningTrap.hpp</a>.</p>
</div>
</div>

View File

@ -0,0 +1,121 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.6"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Penning Trap Simulation: Member List</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="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.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>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script type="text/javascript" async="async" src="https://cdn.jsdelivr.net/npm/mathjax@2/MathJax.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygen-awesome.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 id="projectrow">
<td id="projectalign">
<div id="projectname">Penning Trap Simulation
</div>
<div id="projectbrief">Simulate particle behavior inside a Penning Trap</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.6 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('classPenningTrapTest.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- 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">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">PenningTrapTest Member List</div></div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classPenningTrapTest.html">PenningTrapTest</a>, including all inherited members.</p>
<table class="directory">
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>test_external_B_field</b>() (defined in <a class="el" href="classPenningTrapTest.html">PenningTrapTest</a>)</td><td class="entry"><a class="el" href="classPenningTrapTest.html">PenningTrapTest</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>test_external_E_field</b>() (defined in <a class="el" href="classPenningTrapTest.html">PenningTrapTest</a>)</td><td class="entry"><a class="el" href="classPenningTrapTest.html">PenningTrapTest</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>test_force_on_particle</b>() (defined in <a class="el" href="classPenningTrapTest.html">PenningTrapTest</a>)</td><td class="entry"><a class="el" href="classPenningTrapTest.html">PenningTrapTest</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>test_total_force_external</b>() (defined in <a class="el" href="classPenningTrapTest.html">PenningTrapTest</a>)</td><td class="entry"><a class="el" href="classPenningTrapTest.html">PenningTrapTest</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>test_total_force_particles</b>() (defined in <a class="el" href="classPenningTrapTest.html">PenningTrapTest</a>)</td><td class="entry"><a class="el" href="classPenningTrapTest.html">PenningTrapTest</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.6 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,273 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.6"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Penning Trap Simulation: PenningTrapTest Class Reference</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="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.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>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script type="text/javascript" async="async" src="https://cdn.jsdelivr.net/npm/mathjax@2/MathJax.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygen-awesome.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 id="projectrow">
<td id="projectalign">
<div id="projectname">Penning Trap Simulation
</div>
<div id="projectbrief">Simulate particle behavior inside a Penning Trap</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.6 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('classPenningTrapTest.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- 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">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="classPenningTrapTest-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">PenningTrapTest Class Reference</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-methods" name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a542996d72c713636b95e0aa9118f7901"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPenningTrapTest.html#a542996d72c713636b95e0aa9118f7901">test_external_E_field</a> ()</td></tr>
<tr class="separator:a542996d72c713636b95e0aa9118f7901"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acb806e49a688424588e0c501bc57a230"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPenningTrapTest.html#acb806e49a688424588e0c501bc57a230">test_external_B_field</a> ()</td></tr>
<tr class="separator:acb806e49a688424588e0c501bc57a230"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:addf81fa5692d8146cce5571ccdc5999b"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPenningTrapTest.html#addf81fa5692d8146cce5571ccdc5999b">test_force_on_particle</a> ()</td></tr>
<tr class="separator:addf81fa5692d8146cce5571ccdc5999b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae104e04dcd21ac63281c908132fdf255"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPenningTrapTest.html#ae104e04dcd21ac63281c908132fdf255">test_total_force_external</a> ()</td></tr>
<tr class="separator:ae104e04dcd21ac63281c908132fdf255"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0ee2bbf5e26c115164208b89c5a29e3d"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPenningTrapTest.html#a0ee2bbf5e26c115164208b89c5a29e3d">test_total_force_particles</a> ()</td></tr>
<tr class="separator:a0ee2bbf5e26c115164208b89c5a29e3d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock">
<p class="definition">Definition at line <a class="el" href="test__suite_8cpp_source.html#l00020">20</a> of file <a class="el" href="test__suite_8cpp_source.html">test_suite.cpp</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="acb806e49a688424588e0c501bc57a230" name="acb806e49a688424588e0c501bc57a230"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acb806e49a688424588e0c501bc57a230">&#9670;&#160;</a></span>test_external_B_field()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void PenningTrapTest::test_external_B_field </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="test__suite_8cpp_source.html#l00059">59</a> of file <a class="el" href="test__suite_8cpp_source.html">test_suite.cpp</a>.</p>
</div>
</div>
<a id="a542996d72c713636b95e0aa9118f7901" name="a542996d72c713636b95e0aa9118f7901"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a542996d72c713636b95e0aa9118f7901">&#9670;&#160;</a></span>test_external_E_field()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void PenningTrapTest::test_external_E_field </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="test__suite_8cpp_source.html#l00022">22</a> of file <a class="el" href="test__suite_8cpp_source.html">test_suite.cpp</a>.</p>
</div>
</div>
<a id="addf81fa5692d8146cce5571ccdc5999b" name="addf81fa5692d8146cce5571ccdc5999b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#addf81fa5692d8146cce5571ccdc5999b">&#9670;&#160;</a></span>test_force_on_particle()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void PenningTrapTest::test_force_on_particle </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="test__suite_8cpp_source.html#l00070">70</a> of file <a class="el" href="test__suite_8cpp_source.html">test_suite.cpp</a>.</p>
</div>
</div>
<a id="ae104e04dcd21ac63281c908132fdf255" name="ae104e04dcd21ac63281c908132fdf255"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae104e04dcd21ac63281c908132fdf255">&#9670;&#160;</a></span>test_total_force_external()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void PenningTrapTest::test_total_force_external </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="test__suite_8cpp_source.html#l00095">95</a> of file <a class="el" href="test__suite_8cpp_source.html">test_suite.cpp</a>.</p>
</div>
</div>
<a id="a0ee2bbf5e26c115164208b89c5a29e3d" name="a0ee2bbf5e26c115164208b89c5a29e3d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0ee2bbf5e26c115164208b89c5a29e3d">&#9670;&#160;</a></span>test_total_force_particles()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void PenningTrapTest::test_total_force_particles </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="test__suite_8cpp_source.html#l00108">108</a> of file <a class="el" href="test__suite_8cpp_source.html">test_suite.cpp</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>src/<a class="el" href="test__suite_8cpp_source.html">test_suite.cpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="classPenningTrapTest.html">PenningTrapTest</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.6 </li>
</ul>
</div>
</body>
</html>

View File

@ -105,7 +105,7 @@ $(document).ready(function(){initNavTree('classes.html',''); initResizable(); })
<div class="classindex">
<dl class="classindex even">
<dt class="alphachar"><a id="letter_P" name="letter_P">P</a></dt>
<dd><a class="el" href="classParticle.html">Particle</a></dd><dd><a class="el" href="classPenningTrap.html">PenningTrap</a></dd></dl>
<dd><a class="el" href="classParticle.html">Particle</a></dd><dd><a class="el" href="classPenningTrap.html">PenningTrap</a></dd><dd><a class="el" href="classPenningTrapTest.html">PenningTrapTest</a></dd></dl>
</div>
</div><!-- contents -->
</div><!-- doc-content -->

View File

@ -104,6 +104,8 @@ $(document).ready(function(){initNavTree('dir_68267d1309a1af8e8297ef4c3efbcdba.h
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="files" name="files"></a>
Files</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>animate_100_particles.py</b> <a href="animate__100__particles_8py_source.html">[code]</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8cpp.html">main.cpp</a> <a href="main_8cpp_source.html">[code]</a></td></tr>
<tr class="memdesc:main_8cpp"><td class="mdescLeft">&#160;</td><td class="mdescRight">The main program for this project. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
@ -113,8 +115,6 @@ Files</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="PenningTrap_8cpp.html">PenningTrap.cpp</a> <a href="PenningTrap_8cpp_source.html">[code]</a></td></tr>
<tr class="memdesc:PenningTrap_8cpp"><td class="mdescLeft">&#160;</td><td class="mdescRight">The implementation of the <a class="el" href="classPenningTrap.html" title="A class that simulates a Penning trap.">PenningTrap</a> class. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>test.py</b> <a href="test_8py_source.html">[code]</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="test__suite_8cpp.html">test_suite.cpp</a> <a href="test__suite_8cpp_source.html">[code]</a></td></tr>
<tr class="memdesc:test__suite_8cpp"><td class="mdescLeft">&#160;</td><td class="mdescRight">The test suite for the project. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>

View File

@ -1,9 +1,9 @@
var dir_68267d1309a1af8e8297ef4c3efbcdba =
[
[ "animate_100_particles.py", "animate__100__particles_8py_source.html", null ],
[ "main.cpp", "main_8cpp.html", null ],
[ "Particle.cpp", "Particle_8cpp.html", null ],
[ "PenningTrap.cpp", "PenningTrap_8cpp.html", null ],
[ "test.py", "test_8py_source.html", null ],
[ "test_suite.cpp", "test__suite_8cpp.html", null ],
[ "test_suite.cpp", "test__suite_8cpp.html", "test__suite_8cpp" ],
[ "utils.cpp", "utils_8cpp.html", "utils_8cpp" ]
];

View File

@ -109,10 +109,10 @@ $(document).ready(function(){initNavTree('files.html',''); initResizable(); });
<tr id="row_0_2_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="PenningTrap_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="PenningTrap_8hpp.html" target="_self">PenningTrap.hpp</a></td><td class="desc">A class for simulating a Penning trap </td></tr>
<tr id="row_0_3_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="utils_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="utils_8hpp.html" target="_self">utils.hpp</a></td><td class="desc">Function prototypes and macros that are useful </td></tr>
<tr id="row_1_" class="odd"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_1_" class="arrow" onclick="toggleFolder('1_')">&#9660;</span><span id="img_1_" class="iconfopen" onclick="toggleFolder('1_')">&#160;</span><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html" target="_self">src</a></td><td class="desc"></td></tr>
<tr id="row_1_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="main_8cpp_source.html"><span class="icondoc"></span></a><a class="el" href="main_8cpp.html" target="_self">main.cpp</a></td><td class="desc">The main program for this project </td></tr>
<tr id="row_1_1_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="Particle_8cpp_source.html"><span class="icondoc"></span></a><a class="el" href="Particle_8cpp.html" target="_self">Particle.cpp</a></td><td class="desc">The implementation of the <a class="el" href="classParticle.html" title="A class that holds attributes of a particle.">Particle</a> class </td></tr>
<tr id="row_1_2_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="PenningTrap_8cpp_source.html"><span class="icondoc"></span></a><a class="el" href="PenningTrap_8cpp.html" target="_self">PenningTrap.cpp</a></td><td class="desc">The implementation of the <a class="el" href="classPenningTrap.html" title="A class that simulates a Penning trap.">PenningTrap</a> class </td></tr>
<tr id="row_1_3_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="test_8py_source.html"><span class="icondoc"></span></a><b>test.py</b></td><td class="desc"></td></tr>
<tr id="row_1_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="animate__100__particles_8py_source.html"><span class="icondoc"></span></a><b>animate_100_particles.py</b></td><td class="desc"></td></tr>
<tr id="row_1_1_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="main_8cpp_source.html"><span class="icondoc"></span></a><a class="el" href="main_8cpp.html" target="_self">main.cpp</a></td><td class="desc">The main program for this project </td></tr>
<tr id="row_1_2_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="Particle_8cpp_source.html"><span class="icondoc"></span></a><a class="el" href="Particle_8cpp.html" target="_self">Particle.cpp</a></td><td class="desc">The implementation of the <a class="el" href="classParticle.html" title="A class that holds attributes of a particle.">Particle</a> class </td></tr>
<tr id="row_1_3_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="PenningTrap_8cpp_source.html"><span class="icondoc"></span></a><a class="el" href="PenningTrap_8cpp.html" target="_self">PenningTrap.cpp</a></td><td class="desc">The implementation of the <a class="el" href="classPenningTrap.html" title="A class that simulates a Penning trap.">PenningTrap</a> class </td></tr>
<tr id="row_1_4_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="test__suite_8cpp_source.html"><span class="icondoc"></span></a><a class="el" href="test__suite_8cpp.html" target="_self">test_suite.cpp</a></td><td class="desc">The test suite for the project </td></tr>
<tr id="row_1_5_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="utils_8cpp_source.html"><span class="icondoc"></span></a><a class="el" href="utils_8cpp.html" target="_self">utils.cpp</a></td><td class="desc">Implementation of the utils </td></tr>
</table>

View File

@ -99,8 +99,11 @@ $(document).ready(function(){initNavTree('globals.html',''); initResizable(); })
<div class="contents">
<div class="textblock">Here is a list of all documented file members with links to the documentation:</div><ul>
<li>arma_vector_close_to()&#160;:&#160;<a class="el" href="utils_8hpp.html#a0c95c4791692b06f8811905a76dbd772">utils.hpp</a>, <a class="el" href="utils_8cpp.html#a5d2e1e032fd19614f2fbb58149a7b02a">utils.cpp</a></li>
<li>ASSERT&#160;:&#160;<a class="el" href="utils_8hpp.html#a73d4f21ad937dbc50a0c0538c78fd4f9">utils.hpp</a></li>
<li>DEBUG&#160;:&#160;<a class="el" href="utils_8hpp.html#aecc1f7a8a2493b9e021e5bff76a00a5b">utils.hpp</a></li>
<li>K_E&#160;:&#160;<a class="el" href="constants_8hpp.html#a4e451456ad7e9276ed0afa42826e7ccb">constants.hpp</a></li>
<li>m_assert()&#160;:&#160;<a class="el" href="utils_8hpp.html#a2cc3a2cdb635bac3c8b02e89d4d6af38">utils.hpp</a>, <a class="el" href="utils_8cpp.html#aff5e07c3c1d321709b0cc38e999f427b">utils.cpp</a></li>
<li>scientific_format()&#160;:&#160;<a class="el" href="utils_8hpp.html#adfb618b2fdff47ef30a4a2b62c04f384">utils.hpp</a>, <a class="el" href="utils_8cpp.html#acd2a9c7a7d5a7fe9163be8c4cc110746">utils.cpp</a></li>
<li>T&#160;:&#160;<a class="el" href="constants_8hpp.html#a0acb682b8260ab1c60b918599864e2e5">constants.hpp</a></li>
<li>V&#160;:&#160;<a class="el" href="constants_8hpp.html#af40a326b23c68a27cebe60f16634a2cb">constants.hpp</a></li>

View File

@ -99,6 +99,7 @@ $(document).ready(function(){initNavTree('globals_defs.html',''); initResizable(
<div class="contents">
&#160;<ul>
<li>ASSERT&#160;:&#160;<a class="el" href="utils_8hpp.html#a73d4f21ad937dbc50a0c0538c78fd4f9">utils.hpp</a></li>
<li>DEBUG&#160;:&#160;<a class="el" href="utils_8hpp.html#aecc1f7a8a2493b9e021e5bff76a00a5b">utils.hpp</a></li>
<li>K_E&#160;:&#160;<a class="el" href="constants_8hpp.html#a4e451456ad7e9276ed0afa42826e7ccb">constants.hpp</a></li>
<li>T&#160;:&#160;<a class="el" href="constants_8hpp.html#a0acb682b8260ab1c60b918599864e2e5">constants.hpp</a></li>

View File

@ -99,6 +99,8 @@ $(document).ready(function(){initNavTree('globals_func.html',''); initResizable(
<div class="contents">
&#160;<ul>
<li>arma_vector_close_to()&#160;:&#160;<a class="el" href="utils_8hpp.html#a0c95c4791692b06f8811905a76dbd772">utils.hpp</a>, <a class="el" href="utils_8cpp.html#a5d2e1e032fd19614f2fbb58149a7b02a">utils.cpp</a></li>
<li>m_assert()&#160;:&#160;<a class="el" href="utils_8hpp.html#a2cc3a2cdb635bac3c8b02e89d4d6af38">utils.hpp</a>, <a class="el" href="utils_8cpp.html#aff5e07c3c1d321709b0cc38e999f427b">utils.cpp</a></li>
<li>scientific_format()&#160;:&#160;<a class="el" href="utils_8hpp.html#adfb618b2fdff47ef30a4a2b62c04f384">utils.hpp</a>, <a class="el" href="utils_8cpp.html#acd2a9c7a7d5a7fe9163be8c4cc110746">utils.cpp</a></li>
</ul>
</div><!-- contents -->

View File

@ -101,8 +101,10 @@ $(document).ready(function(){initNavTree('index.html',''); initResizable(); });
<div class="headertitle"><div class="title">Penning trap simulation </div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p><a class="anchor" id="md_README"></a> </p>
<h1><a class="anchor" id="autotoc_md1"></a>
<div class="textblock"><p><a class="anchor" id="md_README"></a> </p><div class="image">
<img src="100_particles.gif" alt=""/>
</div>
<h1><a class="anchor" id="autotoc_md1"></a>
Credits</h1>
<p>The Doxygen theme used here is <a href="https://github.com/jothepro/doxygen-awesome-css">doxygen-awesome-css</a>. </p>
</div></div><!-- PageDoc -->

View File

@ -107,9 +107,7 @@ $(document).ready(function(){initNavTree('main_8cpp.html',''); initResizable();
<p>The main program for this project.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &lt;filesystem&gt;</code><br />
<code>#include &lt;fstream&gt;</code><br />
<code>#include &lt;string&gt;</code><br />
<div class="textblock"><code>#include &lt;fstream&gt;</code><br />
<code>#include &lt;omp.h&gt;</code><br />
<code>#include &lt;sys/stat.h&gt;</code><br />
<code>#include &quot;<a class="el" href="PenningTrap_8hpp_source.html">PenningTrap.hpp</a>&quot;</code><br />
@ -129,8 +127,8 @@ Macros</h2></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a9b944292e4c20825384f4080a081ee41"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8cpp.html#a9b944292e4c20825384f4080a081ee41">euler_100_particles</a> ()</td></tr>
<tr class="separator:a9b944292e4c20825384f4080a081ee41"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a213713d6ecc02a32b588ffd179dc7513"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8cpp.html#a213713d6ecc02a32b588ffd179dc7513">simulate_100_particles</a> ()</td></tr>
<tr class="separator:a213713d6ecc02a32b588ffd179dc7513"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">main</a> ()</td></tr>
<tr class="separator:ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
@ -156,7 +154,7 @@ Janita Ovidie Sandtrøen Willumsen (janitaws)</dd></dl>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="main_8cpp_source.html#l00023">23</a> of file <a class="el" href="main_8cpp_source.html">main.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="main_8cpp_source.html#l00021">21</a> of file <a class="el" href="main_8cpp_source.html">main.cpp</a>.</p>
</div>
</div>
@ -172,7 +170,7 @@ Janita Ovidie Sandtrøen Willumsen (janitaws)</dd></dl>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="main_8cpp_source.html#l00024">24</a> of file <a class="el" href="main_8cpp_source.html">main.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="main_8cpp_source.html#l00022">22</a> of file <a class="el" href="main_8cpp_source.html">main.cpp</a>.</p>
</div>
</div>
@ -188,7 +186,7 @@ Janita Ovidie Sandtrøen Willumsen (janitaws)</dd></dl>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="main_8cpp_source.html#l00022">22</a> of file <a class="el" href="main_8cpp_source.html">main.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="main_8cpp_source.html#l00020">20</a> of file <a class="el" href="main_8cpp_source.html">main.cpp</a>.</p>
</div>
</div>
@ -204,30 +202,11 @@ Janita Ovidie Sandtrøen Willumsen (janitaws)</dd></dl>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="main_8cpp_source.html#l00021">21</a> of file <a class="el" href="main_8cpp_source.html">main.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="main_8cpp_source.html#l00019">19</a> of file <a class="el" href="main_8cpp_source.html">main.cpp</a>.</p>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="a9b944292e4c20825384f4080a081ee41" name="a9b944292e4c20825384f4080a081ee41"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9b944292e4c20825384f4080a081ee41">&#9670;&#160;</a></span>euler_100_particles()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void euler_100_particles </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="main_8cpp_source.html#l00026">26</a> of file <a class="el" href="main_8cpp_source.html">main.cpp</a>.</p>
</div>
</div>
<a id="ae66f6b31b5ad750f1fe042a706a4e3d4" name="ae66f6b31b5ad750f1fe042a706a4e3d4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae66f6b31b5ad750f1fe042a706a4e3d4">&#9670;&#160;</a></span>main()</h2>
@ -245,6 +224,25 @@ Janita Ovidie Sandtrøen Willumsen (janitaws)</dd></dl>
<p class="definition">Definition at line <a class="el" href="main_8cpp_source.html#l00077">77</a> of file <a class="el" href="main_8cpp_source.html">main.cpp</a>.</p>
</div>
</div>
<a id="a213713d6ecc02a32b588ffd179dc7513" name="a213713d6ecc02a32b588ffd179dc7513"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a213713d6ecc02a32b588ffd179dc7513">&#9670;&#160;</a></span>simulate_100_particles()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void simulate_100_particles </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="main_8cpp_source.html#l00024">24</a> of file <a class="el" href="main_8cpp_source.html">main.cpp</a>.</p>
</div>
</div>
</div><!-- contents -->

View File

@ -102,65 +102,65 @@ $(document).ready(function(){initNavTree('main_8cpp_source.html',''); initResiza
</div><!--header-->
<div class="contents">
<a href="main_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span> </div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="preprocessor">#include &lt;filesystem&gt;</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="preprocessor">#include &lt;fstream&gt;</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="preprocessor">#include &lt;string&gt;</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="preprocessor">#include &lt;omp.h&gt;</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="preprocessor">#include &lt;sys/stat.h&gt;</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="preprocessor">#include &lt;fstream&gt;</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="preprocessor">#include &lt;omp.h&gt;</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="preprocessor">#include &lt;sys/stat.h&gt;</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span> </div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="preprocessor">#include &quot;<a class="code" href="PenningTrap_8hpp.html">PenningTrap.hpp</a>&quot;</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span> </div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="preprocessor">#include &quot;<a class="code" href="PenningTrap_8hpp.html">PenningTrap.hpp</a>&quot;</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span> </div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="preprocessor">#define PARTICLES 100</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="preprocessor">#define N 10000</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="preprocessor">#define CHARGE 1.</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="preprocessor">#define MASS 40. </span><span class="comment">// unit: amu</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> </div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="keywordtype">void</span> euler_100_particles()</div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span>{</div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> <a class="code hl_class" href="classPenningTrap.html">PenningTrap</a> trap;</div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> </div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> <span class="comment">// Add particles inside trap</span></div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i &lt; PARTICLES; i++) {</div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> arma::vec r = arma::vec(3).randn() * 0.1 * trap.get_d(); <span class="comment">// random initial position</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> arma::vec v = arma::vec(3).randn() * 0.1 * trap.get_d(); <span class="comment">// random initial velocity</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="preprocessor">#define PARTICLES 100</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="preprocessor">#define N 10000</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="preprocessor">#define CHARGE 1.</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="preprocessor">#define MASS 40. </span><span class="comment">// unit: amu</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> </div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="keywordtype">void</span> simulate_100_particles()</div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span>{</div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> <a class="code hl_class" href="classPenningTrap.html">PenningTrap</a> trap;</div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> </div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> <span class="comment">// Add particles inside trap</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; PARTICLES; i++) {</div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> arma::vec r = arma::vec(3).randn() * 0.1 *</div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> trap.get_d(); <span class="comment">// random initial position</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> arma::vec v = arma::vec(3).randn() * 0.1 *</div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> trap.get_d(); <span class="comment">// random initial velocity</span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> trap.<a class="code hl_function" href="classPenningTrap.html#a6e9776ff5b149f01080800716455d7c8">add_particle</a>(<a class="code hl_class" href="classParticle.html">Particle</a>(CHARGE, MASS, r, v));</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> }</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> </div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> <span class="keywordtype">double</span> time = 50.; <span class="comment">// microseconds</span></div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> <span class="keywordtype">double</span> dt = time / (double) N;</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> <span class="keywordtype">double</span> dt = time / (double)N;</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> </div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">auto</span> res = <span class="keyword">new</span> arma::vec::fixed&lt;3&gt;[PARTICLES][N];</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> </div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> <span class="keywordtype">int</span> counter = 0;</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> </div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> <span class="comment">// Get the path of all particles</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j=0; j &lt; N; j++) {</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span><span class="preprocessor"> #pragma omp parallel for </span></div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i &lt; PARTICLES; i++) {</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j &lt; N; j++) {</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span><span class="preprocessor">#pragma omp parallel for</span></div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; PARTICLES; i++) {</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> res[i][j] = trap.get_particle(i);</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> }</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> trap.<a class="code hl_function" href="classPenningTrap.html#a56544b6f4befb42984e9650cf2a40965">evolve_forward_euler</a>(dt);</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> trap.<a class="code hl_function" href="classPenningTrap.html#ab891b839c40eeb38d8a2a636c70090a9">evolve_RK4</a>(dt);</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> }</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> </div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> std::cout &lt;&lt; counter &lt;&lt; std::endl;</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> </div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> arma::vec::fixed&lt;3&gt;* cur_row;</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> arma::vec::fixed&lt;3&gt; *cur_row;</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> arma::vec::fixed&lt;3&gt; cur_elem;</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> </div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> mkdir(<span class="stringliteral">&quot;output&quot;</span>, 0777);</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> </div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> std::ofstream ofile;</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> </div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> <span class="comment">// Write particle paths to file</span></div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span><span class="preprocessor"> #pragma omp parallel for private(cur_row, cur_elem, ofile)</span></div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i &lt; PARTICLES; i++) {</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> cur_row = res[i];</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> ofile.open(<span class="stringliteral">&quot;output/p&quot;</span> + std::to_string(i) + <span class="stringliteral">&quot;.txt&quot;</span>);</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j=0; j &lt; N; j++) {</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> cur_elem = cur_row[j];</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> ofile &lt;&lt; cur_elem(0) &lt;&lt; <span class="stringliteral">&quot;,&quot;</span> </div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> &lt;&lt; cur_elem(1) &lt;&lt; <span class="stringliteral">&quot;,&quot;</span> </div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> &lt;&lt; cur_elem(2) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> mkdir(<span class="stringliteral">&quot;output/simulate_100_particles&quot;</span>, 0777);</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> </div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> std::ofstream ofile;</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> </div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span><span class="comment">// Write particle paths to file</span></div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span><span class="preprocessor">#pragma omp parallel for private(cur_row, cur_elem, ofile)</span></div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; PARTICLES; i++) {</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> cur_row = res[i];</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> ofile.open(<span class="stringliteral">&quot;output/simulate_100_particles/p&quot;</span> + std::to_string(i) + <span class="stringliteral">&quot;.txt&quot;</span>);</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j &lt; N; j++) {</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> cur_elem = cur_row[j];</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> ofile &lt;&lt; cur_elem(0) &lt;&lt; <span class="stringliteral">&quot;,&quot;</span> &lt;&lt; cur_elem(1) &lt;&lt; <span class="stringliteral">&quot;,&quot;</span> &lt;&lt; cur_elem(2)</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> }</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> ofile.close();</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> }</div>
@ -170,7 +170,7 @@ $(document).ready(function(){initNavTree('main_8cpp_source.html',''); initResiza
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span>{</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> <span class="keywordtype">double</span> start = omp_get_wtime();</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> </div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> euler_100_particles();</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> simulate_100_particles();</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> </div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> <span class="keywordtype">double</span> end = omp_get_wtime();</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> </div>
@ -180,9 +180,9 @@ $(document).ready(function(){initNavTree('main_8cpp_source.html',''); initResiza
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span>}</div>
<div class="ttc" id="aPenningTrap_8hpp_html"><div class="ttname"><a href="PenningTrap_8hpp.html">PenningTrap.hpp</a></div><div class="ttdoc">A class for simulating a Penning trap.</div></div>
<div class="ttc" id="aclassParticle_html"><div class="ttname"><a href="classParticle.html">Particle</a></div><div class="ttdoc">A class that holds attributes of a particle.</div><div class="ttdef"><b>Definition:</b> <a href="Particle_8hpp_source.html#l00019">Particle.hpp:19</a></div></div>
<div class="ttc" id="aclassPenningTrap_html"><div class="ttname"><a href="classPenningTrap.html">PenningTrap</a></div><div class="ttdoc">A class that simulates a Penning trap.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8hpp_source.html#l00025">PenningTrap.hpp:25</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a56544b6f4befb42984e9650cf2a40965"><div class="ttname"><a href="classPenningTrap.html#a56544b6f4befb42984e9650cf2a40965">PenningTrap::evolve_forward_euler</a></div><div class="ttdeci">void evolve_forward_euler(double dt)</div><div class="ttdoc">Go forward one timestep using the forward Euler method.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00121">PenningTrap.cpp:121</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a6e9776ff5b149f01080800716455d7c8"><div class="ttname"><a href="classPenningTrap.html#a6e9776ff5b149f01080800716455d7c8">PenningTrap::add_particle</a></div><div class="ttdeci">void add_particle(Particle particle)</div><div class="ttdoc">Add a particle to the system.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00033">PenningTrap.cpp:33</a></div></div>
<div class="ttc" id="aclassPenningTrap_html"><div class="ttname"><a href="classPenningTrap.html">PenningTrap</a></div><div class="ttdoc">A class that simulates a Penning trap.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8hpp_source.html#l00029">PenningTrap.hpp:29</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a6e9776ff5b149f01080800716455d7c8"><div class="ttname"><a href="classPenningTrap.html#a6e9776ff5b149f01080800716455d7c8">PenningTrap::add_particle</a></div><div class="ttdeci">void add_particle(Particle particle)</div><div class="ttdoc">Add a particle to the system.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00027">PenningTrap.cpp:27</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_ab891b839c40eeb38d8a2a636c70090a9"><div class="ttname"><a href="classPenningTrap.html#ab891b839c40eeb38d8a2a636c70090a9">PenningTrap::evolve_RK4</a></div><div class="ttdeci">void evolve_RK4(double dt)</div><div class="ttdoc">Go forward one timestep using the RK4 method.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00104">PenningTrap.cpp:104</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->

View File

@ -1,13 +1,14 @@
var NAVTREEINDEX0 =
{
"Particle_8cpp.html":[4,0,1,1],
"Particle_8cpp_source.html":[4,0,1,1],
"Particle_8cpp.html":[4,0,1,2],
"Particle_8cpp_source.html":[4,0,1,2],
"Particle_8hpp.html":[4,0,0,1],
"Particle_8hpp_source.html":[4,0,0,1],
"PenningTrap_8cpp.html":[4,0,1,2],
"PenningTrap_8cpp_source.html":[4,0,1,2],
"PenningTrap_8cpp.html":[4,0,1,3],
"PenningTrap_8cpp_source.html":[4,0,1,3],
"PenningTrap_8hpp.html":[4,0,0,2],
"PenningTrap_8hpp_source.html":[4,0,0,2],
"animate__100__particles_8py_source.html":[4,0,1,0],
"annotated.html":[3,0],
"bug.html":[1],
"classParticle.html":[3,0,0],
@ -32,6 +33,7 @@ var NAVTREEINDEX0 =
"classPenningTrap.html#a83cc7a04dae009ed8e75453c38fdf8be":[3,0,1,7],
"classPenningTrap.html#a978a2e2026a4b5308d5184712f81704b":[3,0,1,5],
"classPenningTrap.html#ab891b839c40eeb38d8a2a636c70090a9":[3,0,1,3],
"classPenningTrapTest.html":[3,0,2],
"classes.html":[3,1],
"constants_8hpp.html":[4,0,0,0],
"constants_8hpp.html#a0acb682b8260ab1c60b918599864e2e5":[4,0,0,0,1],
@ -50,20 +52,24 @@ var NAVTREEINDEX0 =
"globals_func.html":[4,1,1],
"index.html":[],
"index.html#autotoc_md1":[0],
"main_8cpp.html":[4,0,1,0],
"main_8cpp_source.html":[4,0,1,0],
"main_8cpp.html":[4,0,1,1],
"main_8cpp_source.html":[4,0,1,1],
"pages.html":[],
"test_8py_source.html":[4,0,1,3],
"test__suite_8cpp.html":[4,0,1,4],
"test__suite_8cpp_source.html":[4,0,1,4],
"todo.html":[2],
"utils_8cpp.html":[4,0,1,5],
"utils_8cpp.html#a58565270b643b24e3132f38c653e0199":[4,0,1,5,0],
"utils_8cpp.html#acd2a9c7a7d5a7fe9163be8c4cc110746":[4,0,1,5,1],
"utils_8cpp.html#a58565270b643b24e3132f38c653e0199":[4,0,1,5,2],
"utils_8cpp.html#a5d2e1e032fd19614f2fbb58149a7b02a":[4,0,1,5,0],
"utils_8cpp.html#acd2a9c7a7d5a7fe9163be8c4cc110746":[4,0,1,5,3],
"utils_8cpp.html#aff5e07c3c1d321709b0cc38e999f427b":[4,0,1,5,1],
"utils_8cpp_source.html":[4,0,1,5],
"utils_8hpp.html":[4,0,0,3],
"utils_8hpp.html#ad54b96a1074f9df4dc892a41d115b72d":[4,0,0,3,1],
"utils_8hpp.html#adfb618b2fdff47ef30a4a2b62c04f384":[4,0,0,3,2],
"utils_8hpp.html#aecc1f7a8a2493b9e021e5bff76a00a5b":[4,0,0,3,0],
"utils_8hpp.html#a0c95c4791692b06f8811905a76dbd772":[4,0,0,3,2],
"utils_8hpp.html#a2cc3a2cdb635bac3c8b02e89d4d6af38":[4,0,0,3,3],
"utils_8hpp.html#a73d4f21ad937dbc50a0c0538c78fd4f9":[4,0,0,3,0],
"utils_8hpp.html#ad54b96a1074f9df4dc892a41d115b72d":[4,0,0,3,4],
"utils_8hpp.html#adfb618b2fdff47ef30a4a2b62c04f384":[4,0,0,3,5],
"utils_8hpp.html#aecc1f7a8a2493b9e021e5bff76a00a5b":[4,0,0,3,1],
"utils_8hpp_source.html":[4,0,0,3]
};

View File

@ -1,4 +1,6 @@
var searchData=
[
['add_5fparticle_0',['add_particle',['../classPenningTrap.html#a6e9776ff5b149f01080800716455d7c8',1,'PenningTrap']]]
['add_5fparticle_0',['add_particle',['../classPenningTrap.html#a6e9776ff5b149f01080800716455d7c8',1,'PenningTrap']]],
['arma_5fvector_5fclose_5fto_1',['arma_vector_close_to',['../utils_8hpp.html#a0c95c4791692b06f8811905a76dbd772',1,'arma_vector_close_to(arma::vec &amp;a, arma::vec &amp;b, double tol=1e-8):&#160;utils.cpp'],['../utils_8cpp.html#a5d2e1e032fd19614f2fbb58149a7b02a',1,'arma_vector_close_to(arma::vec &amp;a, arma::vec &amp;b, double tol):&#160;utils.cpp']]],
['assert_2',['ASSERT',['../utils_8hpp.html#a73d4f21ad937dbc50a0c0538c78fd4f9',1,'utils.hpp']]]
];

View File

@ -1,5 +1,6 @@
var searchData=
[
['m_0',['m',['../classParticle.html#aedcc7e1bc53b0e2b1a4a07c9a1b47563',1,'Particle']]],
['main_2ecpp_1',['main.cpp',['../main_8cpp.html',1,'']]]
['m_5fassert_1',['m_assert',['../utils_8hpp.html#a2cc3a2cdb635bac3c8b02e89d4d6af38',1,'m_assert(bool expr, std::string expr_str, std::string func, std::string file, int line, std::string msg):&#160;utils.cpp'],['../utils_8cpp.html#aff5e07c3c1d321709b0cc38e999f427b',1,'m_assert(bool expr, std::string expr_str, std::string f, std::string file, int line, std::string msg):&#160;utils.cpp']]],
['main_2ecpp_2',['main.cpp',['../main_8cpp.html',1,'']]]
];

View File

@ -7,5 +7,6 @@ var searchData=
['penning_20trap_20simulation_4',['Penning trap simulation',['../index.html',1,'']]],
['penningtrap_5',['PenningTrap',['../classPenningTrap.html',1,'PenningTrap'],['../classParticle.html#aa797d319549dc2a0beb06cdbfd430232',1,'Particle::PenningTrap()'],['../classPenningTrap.html#a81add5063bd5f29d77f0b5c299c6c560',1,'PenningTrap::PenningTrap()']]],
['penningtrap_2ecpp_6',['PenningTrap.cpp',['../PenningTrap_8cpp.html',1,'']]],
['penningtrap_2ehpp_7',['PenningTrap.hpp',['../PenningTrap_8hpp.html',1,'']]]
['penningtrap_2ehpp_7',['PenningTrap.hpp',['../PenningTrap_8hpp.html',1,'']]],
['penningtraptest_8',['PenningTrapTest',['../classPenningTrapTest.html',1,'']]]
];

View File

@ -1,5 +1,6 @@
var searchData=
[
['particle_0',['Particle',['../classParticle.html',1,'']]],
['penningtrap_1',['PenningTrap',['../classPenningTrap.html',1,'']]]
['penningtrap_1',['PenningTrap',['../classPenningTrap.html',1,'']]],
['penningtraptest_2',['PenningTrapTest',['../classPenningTrapTest.html',1,'']]]
];

View File

@ -1,4 +1,4 @@
var searchData=
[
['debug_0',['DEBUG',['../utils_8hpp.html#aecc1f7a8a2493b9e021e5bff76a00a5b',1,'utils.hpp']]]
['assert_0',['ASSERT',['../utils_8hpp.html#a73d4f21ad937dbc50a0c0538c78fd4f9',1,'utils.hpp']]]
];

View File

@ -1,4 +1,4 @@
var searchData=
[
['k_5fe_0',['K_E',['../constants_8hpp.html#a4e451456ad7e9276ed0afa42826e7ccb',1,'constants.hpp']]]
['debug_0',['DEBUG',['../utils_8hpp.html#aecc1f7a8a2493b9e021e5bff76a00a5b',1,'utils.hpp']]]
];

View File

@ -1,4 +1,4 @@
var searchData=
[
['t_0',['T',['../constants_8hpp.html#a0acb682b8260ab1c60b918599864e2e5',1,'constants.hpp']]]
['k_5fe_0',['K_E',['../constants_8hpp.html#a4e451456ad7e9276ed0afa42826e7ccb',1,'constants.hpp']]]
];

View File

@ -1,4 +1,4 @@
var searchData=
[
['v_0',['V',['../constants_8hpp.html#af40a326b23c68a27cebe60f16634a2cb',1,'constants.hpp']]]
['t_0',['T',['../constants_8hpp.html#a0acb682b8260ab1c60b918599864e2e5',1,'constants.hpp']]]
];

4
docs/search/defines_4.js Normal file
View File

@ -0,0 +1,4 @@
var searchData=
[
['v_0',['V',['../constants_8hpp.html#af40a326b23c68a27cebe60f16634a2cb',1,'constants.hpp']]]
];

View File

@ -1,4 +1,5 @@
var searchData=
[
['add_5fparticle_0',['add_particle',['../classPenningTrap.html#a6e9776ff5b149f01080800716455d7c8',1,'PenningTrap']]]
['add_5fparticle_0',['add_particle',['../classPenningTrap.html#a6e9776ff5b149f01080800716455d7c8',1,'PenningTrap']]],
['arma_5fvector_5fclose_5fto_1',['arma_vector_close_to',['../utils_8hpp.html#a0c95c4791692b06f8811905a76dbd772',1,'arma_vector_close_to(arma::vec &amp;a, arma::vec &amp;b, double tol=1e-8):&#160;utils.cpp'],['../utils_8cpp.html#a5d2e1e032fd19614f2fbb58149a7b02a',1,'arma_vector_close_to(arma::vec &amp;a, arma::vec &amp;b, double tol):&#160;utils.cpp']]]
];

View File

@ -1,5 +1,4 @@
var searchData=
[
['particle_0',['Particle',['../classParticle.html#a00e108823877a25513ccae7cac011b4c',1,'Particle']]],
['penningtrap_1',['PenningTrap',['../classPenningTrap.html#a81add5063bd5f29d77f0b5c299c6c560',1,'PenningTrap']]]
['m_5fassert_0',['m_assert',['../utils_8hpp.html#a2cc3a2cdb635bac3c8b02e89d4d6af38',1,'m_assert(bool expr, std::string expr_str, std::string func, std::string file, int line, std::string msg):&#160;utils.cpp'],['../utils_8cpp.html#aff5e07c3c1d321709b0cc38e999f427b',1,'m_assert(bool expr, std::string expr_str, std::string f, std::string file, int line, std::string msg):&#160;utils.cpp']]]
];

View File

@ -1,4 +1,5 @@
var searchData=
[
['scientific_5fformat_0',['scientific_format',['../utils_8hpp.html#adfb618b2fdff47ef30a4a2b62c04f384',1,'scientific_format(double d, int width=20, int prec=10):&#160;utils.cpp'],['../utils_8hpp.html#ad54b96a1074f9df4dc892a41d115b72d',1,'scientific_format(const std::vector&lt; double &gt; &amp;v, int width=20, int prec=10):&#160;utils.cpp'],['../utils_8cpp.html#acd2a9c7a7d5a7fe9163be8c4cc110746',1,'scientific_format(double d, int width, int prec):&#160;utils.cpp'],['../utils_8cpp.html#a58565270b643b24e3132f38c653e0199',1,'scientific_format(const std::vector&lt; double &gt; &amp;v, int width, int prec):&#160;utils.cpp']]]
['particle_0',['Particle',['../classParticle.html#a00e108823877a25513ccae7cac011b4c',1,'Particle']]],
['penningtrap_1',['PenningTrap',['../classPenningTrap.html#a81add5063bd5f29d77f0b5c299c6c560',1,'PenningTrap']]]
];

View File

@ -1,6 +1,4 @@
var searchData=
[
['total_5fforce_0',['total_force',['../classPenningTrap.html#a83cc7a04dae009ed8e75453c38fdf8be',1,'PenningTrap']]],
['total_5fforce_5fexternal_1',['total_force_external',['../classPenningTrap.html#a045adb85e97a8e0c38fb36d2fd74eeee',1,'PenningTrap']]],
['total_5fforce_5fparticles_2',['total_force_particles',['../classPenningTrap.html#a135db7d991d9b88b00fde4edee71f78d',1,'PenningTrap']]]
['scientific_5fformat_0',['scientific_format',['../utils_8hpp.html#adfb618b2fdff47ef30a4a2b62c04f384',1,'scientific_format(double d, int width=20, int prec=10):&#160;utils.cpp'],['../utils_8hpp.html#ad54b96a1074f9df4dc892a41d115b72d',1,'scientific_format(const std::vector&lt; double &gt; &amp;v, int width=20, int prec=10):&#160;utils.cpp'],['../utils_8cpp.html#acd2a9c7a7d5a7fe9163be8c4cc110746',1,'scientific_format(double d, int width, int prec):&#160;utils.cpp'],['../utils_8cpp.html#a58565270b643b24e3132f38c653e0199',1,'scientific_format(const std::vector&lt; double &gt; &amp;v, int width, int prec):&#160;utils.cpp']]]
];

View File

@ -0,0 +1,6 @@
var searchData=
[
['total_5fforce_0',['total_force',['../classPenningTrap.html#a83cc7a04dae009ed8e75453c38fdf8be',1,'PenningTrap']]],
['total_5fforce_5fexternal_1',['total_force_external',['../classPenningTrap.html#a045adb85e97a8e0c38fb36d2fd74eeee',1,'PenningTrap']]],
['total_5fforce_5fparticles_2',['total_force_particles',['../classPenningTrap.html#a135db7d991d9b88b00fde4edee71f78d',1,'PenningTrap']]]
];

View File

@ -3,10 +3,10 @@ var indexSectionsWithContent =
0: "abcdefkmpqrstuv",
1: "p",
2: "cmptu",
3: "aefpst",
3: "aefmpst",
4: "bdmpqrv",
5: "p",
6: "dktv",
6: "adktv",
7: "bpt"
};

View File

@ -99,6 +99,7 @@ $(document).ready(function(){initNavTree('test__suite_8cpp.html',''); initResiza
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle"><div class="title">test_suite.cpp File Reference</div></div>
</div><!--header-->
@ -106,9 +107,19 @@ $(document).ready(function(){initNavTree('test__suite_8cpp.html',''); initResiza
<p>The test suite for the project.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="PenningTrap_8hpp_source.html">PenningTrap.hpp</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="utils_8hpp_source.html">utils.hpp</a>&quot;</code><br />
<code>#include &lt;iomanip&gt;</code><br />
<code>#include &lt;sstream&gt;</code><br />
<code>#include &lt;string&gt;</code><br />
</div>
<p><a href="test__suite_8cpp_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPenningTrapTest.html">PenningTrapTest</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="test__suite_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">main</a> ()</td></tr>
@ -139,7 +150,7 @@ Janita Ovidie Sandtrøen Willumsen (janitaws)</dd></dl>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="test__suite_8cpp_source.html#l00012">12</a> of file <a class="el" href="test__suite_8cpp_source.html">test_suite.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="test__suite_8cpp_source.html#l00135">135</a> of file <a class="el" href="test__suite_8cpp_source.html">test_suite.cpp</a>.</p>
</div>
</div>

4
docs/test__suite_8cpp.js Normal file
View File

@ -0,0 +1,4 @@
var test__suite_8cpp =
[
[ "PenningTrapTest", "classPenningTrapTest.html", null ]
];

View File

@ -102,10 +102,151 @@ $(document).ready(function(){initNavTree('test__suite_8cpp_source.html',''); ini
</div><!--header-->
<div class="contents">
<a href="test__suite_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span> </div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="keywordtype">int</span> main() </div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span>{</div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span>}</div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="preprocessor">#include &quot;<a class="code" href="PenningTrap_8hpp.html">PenningTrap.hpp</a>&quot;</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="preprocessor">#include &quot;<a class="code" href="utils_8hpp.html">utils.hpp</a>&quot;</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span> </div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="preprocessor">#include &lt;iomanip&gt;</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="preprocessor">#include &lt;sstream&gt;</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="preprocessor">#include &lt;string&gt;</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> </div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"><a class="line" href="classPenningTrapTest.html"> 20</a></span><span class="keyword">class </span><a class="code hl_class" href="classPenningTrapTest.html">PenningTrapTest</a> {</div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> <span class="keyword">static</span> <span class="keywordtype">void</span> test_external_E_field()</div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> {</div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> <a class="code hl_class" href="classPenningTrap.html">PenningTrap</a> trap;</div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> </div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// Vector containing inputs and expected results</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> std::vector&lt;std::pair&lt;arma::vec, arma::vec&gt;&gt; tests;</div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> </div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> tests.push_back(</div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> std::make_pair(arma::vec{0., 0., 0.}, arma::vec{0., 0., 0.}));</div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> </div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> tests.push_back(std::make_pair(arma::vec{10., 0., 0.},</div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> arma::vec{96.4852558, 0., 0.}));</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> </div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> tests.push_back(std::make_pair(arma::vec{10., 0., 0.},</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> arma::vec{96.4852558, 0., 0.}));</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> </div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> tests.push_back(std::make_pair(arma::vec{0., 10., 0.},</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> arma::vec{0., 96.4852558, 0.}));</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> </div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> tests.push_back(std::make_pair(arma::vec{0., 0., 10.},</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> arma::vec{0., 0., -192.9705116}));</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> </div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> arma::vec result;</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> arma::vec v;</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> std::stringstream msg;</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; tests.size(); i++) {</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> v = tests.at(i).first;</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> result = trap.<a class="code hl_function" href="classPenningTrap.html#a978a2e2026a4b5308d5184712f81704b">external_E_field</a>(v);</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> </div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> msg.str(<span class="stringliteral">&quot;&quot;</span>);</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> msg &lt;&lt; <span class="stringliteral">&quot;Testing the external E field at (&quot;</span> &lt;&lt; std::setprecision(2)</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> &lt;&lt; v(0) &lt;&lt; <span class="stringliteral">&quot;,&quot;</span> &lt;&lt; v(1) &lt;&lt; <span class="stringliteral">&quot;,&quot;</span> &lt;&lt; v(2) &lt;&lt; <span class="stringliteral">&quot;).&quot;</span>;</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> </div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> <a class="code hl_define" href="utils_8hpp.html#a73d4f21ad937dbc50a0c0538c78fd4f9">ASSERT</a>(<a class="code hl_function" href="utils_8hpp.html#a0c95c4791692b06f8811905a76dbd772">arma_vector_close_to</a>(result, tests.at(i).second), msg.str());</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> }</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> }</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> </div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> <span class="keyword">static</span> <span class="keywordtype">void</span> test_external_B_field()</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> {</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> <span class="comment">// No point in testing at different points since it&#39;s not dependent</span></div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> <span class="comment">// on position.</span></div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> <a class="code hl_class" href="classPenningTrap.html">PenningTrap</a> trap;</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> arma::vec expected{0., 0., <a class="code hl_define" href="constants_8hpp.html#a0acb682b8260ab1c60b918599864e2e5">T</a>};</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> arma::vec result = trap.<a class="code hl_function" href="classPenningTrap.html#a2a3e7f480ba52e9f24d4c50c3981a784">external_B_field</a>(arma::vec{0., 0., 0.});</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> <a class="code hl_define" href="utils_8hpp.html#a73d4f21ad937dbc50a0c0538c78fd4f9">ASSERT</a>(<a class="code hl_function" href="utils_8hpp.html#a0c95c4791692b06f8811905a76dbd772">arma_vector_close_to</a>(expected, result),</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> <span class="stringliteral">&quot;Testing the external B field at (0,0,0)&quot;</span>);</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> }</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> </div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> <span class="keyword">static</span> <span class="keywordtype">void</span> test_force_on_particle()</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> {</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> <a class="code hl_class" href="classPenningTrap.html">PenningTrap</a> trap;</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> arma::vec v{0., 0., 0.};</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> </div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> <span class="comment">// Add particles to test</span></div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> trap.<a class="code hl_function" href="classPenningTrap.html#a6e9776ff5b149f01080800716455d7c8">add_particle</a>(<a class="code hl_class" href="classParticle.html">Particle</a>(1., 40., arma::vec{0., 0., 0.}, v));</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> trap.<a class="code hl_function" href="classPenningTrap.html#a6e9776ff5b149f01080800716455d7c8">add_particle</a>(<a class="code hl_class" href="classParticle.html">Particle</a>(1., 40., arma::vec{1., 0., 0.}, v));</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> trap.<a class="code hl_function" href="classPenningTrap.html#a6e9776ff5b149f01080800716455d7c8">add_particle</a>(<a class="code hl_class" href="classParticle.html">Particle</a>(1., 40., arma::vec{0., 3., 4.}, v));</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> </div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> <span class="comment">// Test p0 and p1</span></div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> arma::vec expected{-1., 0., 0.};</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> arma::vec result = trap.<a class="code hl_function" href="classPenningTrap.html#a4790f41e4fbc6ede4991aa7bbda92182">force_on_particle</a>(0, 1);</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> <a class="code hl_define" href="utils_8hpp.html#a73d4f21ad937dbc50a0c0538c78fd4f9">ASSERT</a>(<a class="code hl_function" href="utils_8hpp.html#a0c95c4791692b06f8811905a76dbd772">arma_vector_close_to</a>(expected, result),</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> <span class="stringliteral">&quot;Testing the force on a particle at (0,0,0) from a &quot;</span></div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> <span class="stringliteral">&quot;particle at (1,0,0).&quot;</span>);</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> </div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> <span class="comment">// Test p0 and p2</span></div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> expected = arma::vec{0, -.024, -.032};</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> result = trap.<a class="code hl_function" href="classPenningTrap.html#a4790f41e4fbc6ede4991aa7bbda92182">force_on_particle</a>(0, 2);</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> <a class="code hl_define" href="utils_8hpp.html#a73d4f21ad937dbc50a0c0538c78fd4f9">ASSERT</a>(<a class="code hl_function" href="utils_8hpp.html#a0c95c4791692b06f8811905a76dbd772">arma_vector_close_to</a>(expected, result),</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> <span class="stringliteral">&quot;Testing the force on a particle at (0,0,0) from a &quot;</span></div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> <span class="stringliteral">&quot;particle at (0,3,4).&quot;</span>);</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> }</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> </div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> <span class="keyword">static</span> <span class="keywordtype">void</span> test_total_force_external()</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> {</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> <a class="code hl_class" href="classPenningTrap.html">PenningTrap</a> trap;</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> trap.<a class="code hl_function" href="classPenningTrap.html#a6e9776ff5b149f01080800716455d7c8">add_particle</a>(</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> <a class="code hl_class" href="classParticle.html">Particle</a>(1., 40., arma::vec{1., 2., 3.}, arma::vec{3., 4., 5.}));</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> </div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> arma::vec expected{395.58954878, -270.15871624, -57.89115348};</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> arma::vec result = trap.<a class="code hl_function" href="classPenningTrap.html#a045adb85e97a8e0c38fb36d2fd74eeee">total_force_external</a>(0);</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> <a class="code hl_define" href="utils_8hpp.html#a73d4f21ad937dbc50a0c0538c78fd4f9">ASSERT</a>(<a class="code hl_function" href="utils_8hpp.html#a0c95c4791692b06f8811905a76dbd772">arma_vector_close_to</a>(expected, result),</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> <span class="stringliteral">&quot;Testing the total external force on a particle at &quot;</span></div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> <span class="stringliteral">&quot;(1,2,3) with velocity (3,4,5)&quot;</span>);</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> }</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> </div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> <span class="keyword">static</span> <span class="keywordtype">void</span> test_total_force_particles()</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> {</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> <a class="code hl_class" href="classPenningTrap.html">PenningTrap</a> trap;</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> trap.<a class="code hl_function" href="classPenningTrap.html#a6e9776ff5b149f01080800716455d7c8">add_particle</a>(</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> <a class="code hl_class" href="classParticle.html">Particle</a>(1., 40., arma::vec{0., 0., 0.}, arma::vec{0., 0., 0.}));</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> </div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> arma::vec expected{0., 0., 0.};</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> arma::vec result = trap.<a class="code hl_function" href="classPenningTrap.html#a135db7d991d9b88b00fde4edee71f78d">total_force_particles</a>(0);</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> <a class="code hl_define" href="utils_8hpp.html#a73d4f21ad937dbc50a0c0538c78fd4f9">ASSERT</a>(<a class="code hl_function" href="utils_8hpp.html#a0c95c4791692b06f8811905a76dbd772">arma_vector_close_to</a>(expected, result),</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <span class="stringliteral">&quot;Testing the total force of all particles on particle 0 &quot;</span></div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> <span class="stringliteral">&quot;with only a single particle&quot;</span>);</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> </div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> trap.<a class="code hl_function" href="classPenningTrap.html#a6e9776ff5b149f01080800716455d7c8">add_particle</a>(</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> <a class="code hl_class" href="classParticle.html">Particle</a>(1., 40., arma::vec{1., 0., 0.}, arma::vec{0., 0., 0.}));</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> trap.<a class="code hl_function" href="classPenningTrap.html#a6e9776ff5b149f01080800716455d7c8">add_particle</a>(</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> <a class="code hl_class" href="classParticle.html">Particle</a>(1., 40., arma::vec{0., 1., 0.}, arma::vec{0., 0., 0.}));</div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> trap.<a class="code hl_function" href="classPenningTrap.html#a6e9776ff5b149f01080800716455d7c8">add_particle</a>(</div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> <a class="code hl_class" href="classParticle.html">Particle</a>(1., 40., arma::vec{0., 0., 1.}, arma::vec{0., 0., 0.}));</div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> </div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> expected = arma::vec(3, arma::fill::value(-3473.383325));</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> result = trap.<a class="code hl_function" href="classPenningTrap.html#a135db7d991d9b88b00fde4edee71f78d">total_force_particles</a>(0);</div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> <a class="code hl_define" href="utils_8hpp.html#a73d4f21ad937dbc50a0c0538c78fd4f9">ASSERT</a>(<a class="code hl_function" href="utils_8hpp.html#a0c95c4791692b06f8811905a76dbd772">arma_vector_close_to</a>(expected, result),</div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> <span class="stringliteral">&quot;Testing the total force of all particles on particle 0 &quot;</span></div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> <span class="stringliteral">&quot;with 3 other particles.&quot;</span>);</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> }</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span>};</div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> </div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span><span class="keywordtype">int</span> main()</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span>{</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> PenningTrapTest::test_external_E_field();</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> PenningTrapTest::test_external_B_field();</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> PenningTrapTest::test_force_on_particle();</div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> PenningTrapTest::test_total_force_external();</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> PenningTrapTest::test_total_force_particles();</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span>}</div>
<div class="ttc" id="aPenningTrap_8hpp_html"><div class="ttname"><a href="PenningTrap_8hpp.html">PenningTrap.hpp</a></div><div class="ttdoc">A class for simulating a Penning trap.</div></div>
<div class="ttc" id="aclassParticle_html"><div class="ttname"><a href="classParticle.html">Particle</a></div><div class="ttdoc">A class that holds attributes of a particle.</div><div class="ttdef"><b>Definition:</b> <a href="Particle_8hpp_source.html#l00019">Particle.hpp:19</a></div></div>
<div class="ttc" id="aclassPenningTrapTest_html"><div class="ttname"><a href="classPenningTrapTest.html">PenningTrapTest</a></div><div class="ttdef"><b>Definition:</b> <a href="test__suite_8cpp_source.html#l00020">test_suite.cpp:20</a></div></div>
<div class="ttc" id="aclassPenningTrap_html"><div class="ttname"><a href="classPenningTrap.html">PenningTrap</a></div><div class="ttdoc">A class that simulates a Penning trap.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8hpp_source.html#l00029">PenningTrap.hpp:29</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a045adb85e97a8e0c38fb36d2fd74eeee"><div class="ttname"><a href="classPenningTrap.html#a045adb85e97a8e0c38fb36d2fd74eeee">PenningTrap::total_force_external</a></div><div class="ttdeci">arma::vec total_force_external(int i)</div><div class="ttdoc">Calculate the total external force on a particle.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00065">PenningTrap.cpp:65</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a135db7d991d9b88b00fde4edee71f78d"><div class="ttname"><a href="classPenningTrap.html#a135db7d991d9b88b00fde4edee71f78d">PenningTrap::total_force_particles</a></div><div class="ttdeci">arma::vec total_force_particles(int i)</div><div class="ttdoc">Calculate the total force on a particle from other particles.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00080">PenningTrap.cpp:80</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a2a3e7f480ba52e9f24d4c50c3981a784"><div class="ttname"><a href="classPenningTrap.html#a2a3e7f480ba52e9f24d4c50c3981a784">PenningTrap::external_B_field</a></div><div class="ttdeci">arma::vec external_B_field(arma::vec r)</div><div class="ttdoc">Calculate B at point r.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00043">PenningTrap.cpp:43</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a4790f41e4fbc6ede4991aa7bbda92182"><div class="ttname"><a href="classPenningTrap.html#a4790f41e4fbc6ede4991aa7bbda92182">PenningTrap::force_on_particle</a></div><div class="ttdeci">arma::vec force_on_particle(int i, int j)</div><div class="ttdoc">Calculate the force between 2 particles.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00050">PenningTrap.cpp:50</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a6e9776ff5b149f01080800716455d7c8"><div class="ttname"><a href="classPenningTrap.html#a6e9776ff5b149f01080800716455d7c8">PenningTrap::add_particle</a></div><div class="ttdeci">void add_particle(Particle particle)</div><div class="ttdoc">Add a particle to the system.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00027">PenningTrap.cpp:27</a></div></div>
<div class="ttc" id="aclassPenningTrap_html_a978a2e2026a4b5308d5184712f81704b"><div class="ttname"><a href="classPenningTrap.html#a978a2e2026a4b5308d5184712f81704b">PenningTrap::external_E_field</a></div><div class="ttdeci">arma::vec external_E_field(arma::vec r)</div><div class="ttdoc">Calculate E at point r.</div><div class="ttdef"><b>Definition:</b> <a href="PenningTrap_8cpp_source.html#l00032">PenningTrap.cpp:32</a></div></div>
<div class="ttc" id="aconstants_8hpp_html_a0acb682b8260ab1c60b918599864e2e5"><div class="ttname"><a href="constants_8hpp.html#a0acb682b8260ab1c60b918599864e2e5">T</a></div><div class="ttdeci">#define T</div><div class="ttdoc">1 Tesla. unit:</div><div class="ttdef"><b>Definition:</b> <a href="constants_8hpp_source.html#l00017">constants.hpp:17</a></div></div>
<div class="ttc" id="autils_8hpp_html"><div class="ttname"><a href="utils_8hpp.html">utils.hpp</a></div><div class="ttdoc">Function prototypes and macros that are useful.</div></div>
<div class="ttc" id="autils_8hpp_html_a0c95c4791692b06f8811905a76dbd772"><div class="ttname"><a href="utils_8hpp.html#a0c95c4791692b06f8811905a76dbd772">arma_vector_close_to</a></div><div class="ttdeci">bool arma_vector_close_to(arma::vec &amp;a, arma::vec &amp;b, double tol=1e-8)</div><div class="ttdoc">Test if two armadillo vectors are close to each other.</div><div class="ttdef"><b>Definition:</b> <a href="utils_8cpp_source.html#l00059">utils.cpp:59</a></div></div>
<div class="ttc" id="autils_8hpp_html_a73d4f21ad937dbc50a0c0538c78fd4f9"><div class="ttname"><a href="utils_8hpp.html#a73d4f21ad937dbc50a0c0538c78fd4f9">ASSERT</a></div><div class="ttdeci">#define ASSERT(expr, msg)</div><div class="ttdoc">A prettier assertion function.</div><div class="ttdef"><b>Definition:</b> <a href="utils_8hpp_source.html#l00045">utils.hpp:45</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->

View File

@ -118,6 +118,12 @@ Functions</h2></td></tr>
<tr class="memitem:a58565270b643b24e3132f38c653e0199"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8cpp.html#a58565270b643b24e3132f38c653e0199">scientific_format</a> (const std::vector&lt; double &gt; &amp;v, int width, int prec)</td></tr>
<tr class="memdesc:a58565270b643b24e3132f38c653e0199"><td class="mdescLeft">&#160;</td><td class="mdescRight">Turns a vector of doubles into a string written in scientific format. <br /></td></tr>
<tr class="separator:a58565270b643b24e3132f38c653e0199"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aff5e07c3c1d321709b0cc38e999f427b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8cpp.html#aff5e07c3c1d321709b0cc38e999f427b">m_assert</a> (bool expr, std::string expr_str, std::string f, std::string file, int line, std::string msg)</td></tr>
<tr class="memdesc:aff5e07c3c1d321709b0cc38e999f427b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Test an expression, confirm that test is ok, or abort execution. <br /></td></tr>
<tr class="separator:aff5e07c3c1d321709b0cc38e999f427b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5d2e1e032fd19614f2fbb58149a7b02a"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8cpp.html#a5d2e1e032fd19614f2fbb58149a7b02a">arma_vector_close_to</a> (arma::vec &amp;a, arma::vec &amp;b, double tol)</td></tr>
<tr class="memdesc:a5d2e1e032fd19614f2fbb58149a7b02a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Test if two armadillo vectors are close to each other. <br /></td></tr>
<tr class="separator:a5d2e1e032fd19614f2fbb58149a7b02a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Implementation of the utils. </p>
@ -129,6 +135,122 @@ Janita Ovidie Sandtrøen Willumsen (janitaws)</dd></dl>
<p class="definition">Definition in file <a class="el" href="utils_8cpp_source.html">utils.cpp</a>.</p>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="a5d2e1e032fd19614f2fbb58149a7b02a" name="a5d2e1e032fd19614f2fbb58149a7b02a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5d2e1e032fd19614f2fbb58149a7b02a">&#9670;&#160;</a></span>arma_vector_close_to()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool arma_vector_close_to </td>
<td>(</td>
<td class="paramtype">arma::vec &amp;&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">arma::vec &amp;&#160;</td>
<td class="paramname"><em>b</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>tol</em> = <code>1e-8</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Test if two armadillo vectors are close to each other. </p>
<p>This function takes in 2 vectors and checks if they are approximately equal to each other given a tolerance.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">a</td><td>Vector a </td></tr>
<tr><td class="paramname">b</td><td>Vector b </td></tr>
<tr><td class="paramname">tol</td><td>The tolerance</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Boolean </dd></dl>
<p class="definition">Definition at line <a class="el" href="utils_8cpp_source.html#l00059">59</a> of file <a class="el" href="utils_8cpp_source.html">utils.cpp</a>.</p>
</div>
</div>
<a id="aff5e07c3c1d321709b0cc38e999f427b" name="aff5e07c3c1d321709b0cc38e999f427b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aff5e07c3c1d321709b0cc38e999f427b">&#9670;&#160;</a></span>m_assert()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void m_assert </td>
<td>(</td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>expr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::string&#160;</td>
<td class="paramname"><em>expr_str</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::string&#160;</td>
<td class="paramname"><em>func</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::string&#160;</td>
<td class="paramname"><em>file</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>line</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::string&#160;</td>
<td class="paramname"><em>msg</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Test an expression, confirm that test is ok, or abort execution. </p>
<p>This function takes in an expression and prints an OK message if it's true, or it prints a fail message and aborts execution if it fails.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">expr</td><td>The expression to be evaluated </td></tr>
<tr><td class="paramname">expr_str</td><td>The stringified version of the expression </td></tr>
<tr><td class="paramname">func</td><td>The function name of the caller </td></tr>
<tr><td class="paramname">file</td><td>The file of the caller </td></tr>
<tr><td class="paramname">line</td><td>The line number where this function is called from </td></tr>
<tr><td class="paramname">msg</td><td>The message to be displayed </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="utils_8cpp_source.html#l00040">40</a> of file <a class="el" href="utils_8cpp_source.html">utils.cpp</a>.</p>
</div>
</div>
<a id="a58565270b643b24e3132f38c653e0199" name="a58565270b643b24e3132f38c653e0199"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a58565270b643b24e3132f38c653e0199">&#9670;&#160;</a></span>scientific_format() <span class="overload">[1/2]</span></h2>

View File

@ -1,5 +1,7 @@
var utils_8cpp =
[
[ "arma_vector_close_to", "utils_8cpp.html#a5d2e1e032fd19614f2fbb58149a7b02a", null ],
[ "m_assert", "utils_8cpp.html#aff5e07c3c1d321709b0cc38e999f427b", null ],
[ "scientific_format", "utils_8cpp.html#a58565270b643b24e3132f38c653e0199", null ],
[ "scientific_format", "utils_8cpp.html#acd2a9c7a7d5a7fe9163be8c4cc110746", null ]
];

View File

@ -111,15 +111,60 @@ $(document).ready(function(){initNavTree('utils_8cpp_source.html',''); initResiz
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span> <span class="keywordflow">return</span> ss.str();</div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span>}</div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span> </div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"><a class="line" href="utils_8hpp.html#ad54b96a1074f9df4dc892a41d115b72d"> 21</a></span>std::string <a class="code hl_function" href="utils_8cpp.html#acd2a9c7a7d5a7fe9163be8c4cc110746">scientific_format</a>(<span class="keyword">const</span> std::vector&lt;double&gt;&amp; v, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> prec)</div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"><a class="line" href="utils_8hpp.html#ad54b96a1074f9df4dc892a41d115b72d"> 21</a></span>std::string <a class="code hl_function" href="utils_8cpp.html#acd2a9c7a7d5a7fe9163be8c4cc110746">scientific_format</a>(<span class="keyword">const</span> std::vector&lt;double&gt; &amp;v, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> prec)</div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span>{</div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> std::stringstream ss;</div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> <span class="keywordflow">for</span>(<span class="keywordtype">double</span> elem : v) {</div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> <span class="keywordflow">for</span> (<span class="keywordtype">double</span> elem : v) {</div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> ss &lt;&lt; <a class="code hl_function" href="utils_8cpp.html#acd2a9c7a7d5a7fe9163be8c4cc110746">scientific_format</a>(elem, width, prec);</div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> }</div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> <span class="keywordflow">return</span> ss.str();</div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span>}</div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> </div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="keyword">static</span> <span class="keywordtype">void</span> print_message(std::string msg)</div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span>{</div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> <span class="keywordflow">if</span> (msg.size() &gt; 0) {</div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> std::cout &lt;&lt; <span class="stringliteral">&quot;message: &quot;</span> &lt;&lt; msg &lt;&lt; <span class="stringliteral">&quot;\n\n&quot;</span>;</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> }</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> std::cout &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> }</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span>}</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> </div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"><a class="line" href="utils_8hpp.html#a2cc3a2cdb635bac3c8b02e89d4d6af38"> 40</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="utils_8cpp.html#aff5e07c3c1d321709b0cc38e999f427b">m_assert</a>(<span class="keywordtype">bool</span> expr, std::string expr_str, std::string f, std::string file,</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> <span class="keywordtype">int</span> line, std::string msg)</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span>{</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> std::string new_assert(f.size() + (expr ? 4 : 6), <span class="charliteral">&#39;-&#39;</span>);</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> std::cout &lt;&lt; <span class="stringliteral">&quot;\x1B[36m&quot;</span> &lt;&lt; new_assert &lt;&lt; <span class="stringliteral">&quot;\033[0m\n&quot;</span>;</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> std::cout &lt;&lt; f &lt;&lt; <span class="stringliteral">&quot;: &quot;</span>;</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> <span class="keywordflow">if</span> (expr) {</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> std::cout &lt;&lt; <span class="stringliteral">&quot;\x1B[32mOK\033[0m\n&quot;</span>;</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> print_message(msg);</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> }</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> std::cout &lt;&lt; <span class="stringliteral">&quot;\x1B[31mFAIL\033[0m\n&quot;</span>;</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> print_message(msg);</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> std::cout &lt;&lt; file &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; line &lt;&lt; <span class="stringliteral">&quot;: Assertion \&quot;&quot;</span> &lt;&lt; expr_str</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> &lt;&lt; <span class="stringliteral">&quot;\&quot; Failed\n\n&quot;</span>;</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> abort();</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> }</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span>}</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> </div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"><a class="line" href="utils_8hpp.html#a0c95c4791692b06f8811905a76dbd772"> 59</a></span><span class="keywordtype">bool</span> <a class="code hl_function" href="utils_8cpp.html#a5d2e1e032fd19614f2fbb58149a7b02a">arma_vector_close_to</a>(arma::vec &amp;a, arma::vec &amp;b, <span class="keywordtype">double</span> tol)</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span>{</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> <span class="keywordflow">if</span> (a.n_elem != b.n_elem) {</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> }</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> </div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; a.n_elem; i++) {</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> <span class="keywordflow">if</span> (std::abs(a(i) - b(i)) &gt;= tol) {</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> }</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> }</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span>}</div>
<div class="ttc" id="autils_8cpp_html_a5d2e1e032fd19614f2fbb58149a7b02a"><div class="ttname"><a href="utils_8cpp.html#a5d2e1e032fd19614f2fbb58149a7b02a">arma_vector_close_to</a></div><div class="ttdeci">bool arma_vector_close_to(arma::vec &amp;a, arma::vec &amp;b, double tol)</div><div class="ttdoc">Test if two armadillo vectors are close to each other.</div><div class="ttdef"><b>Definition:</b> <a href="utils_8cpp_source.html#l00059">utils.cpp:59</a></div></div>
<div class="ttc" id="autils_8cpp_html_acd2a9c7a7d5a7fe9163be8c4cc110746"><div class="ttname"><a href="utils_8cpp.html#acd2a9c7a7d5a7fe9163be8c4cc110746">scientific_format</a></div><div class="ttdeci">std::string scientific_format(double d, int width, int prec)</div><div class="ttdoc">Turns a double into a string written in scientific format.</div><div class="ttdef"><b>Definition:</b> <a href="utils_8cpp_source.html#l00014">utils.cpp:14</a></div></div>
<div class="ttc" id="autils_8cpp_html_aff5e07c3c1d321709b0cc38e999f427b"><div class="ttname"><a href="utils_8cpp.html#aff5e07c3c1d321709b0cc38e999f427b">m_assert</a></div><div class="ttdeci">void m_assert(bool expr, std::string expr_str, std::string f, std::string file, int line, std::string msg)</div><div class="ttdoc">Test an expression, confirm that test is ok, or abort execution.</div><div class="ttdef"><b>Definition:</b> <a href="utils_8cpp_source.html#l00040">utils.cpp:40</a></div></div>
<div class="ttc" id="autils_8hpp_html"><div class="ttname"><a href="utils_8hpp.html">utils.hpp</a></div><div class="ttdoc">Function prototypes and macros that are useful.</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->

View File

@ -107,10 +107,11 @@ $(document).ready(function(){initNavTree('utils_8hpp.html',''); initResizable();
<p>Function prototypes and macros that are useful.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &lt;string&gt;</code><br />
<code>#include &lt;vector&gt;</code><br />
<div class="textblock"><code>#include &lt;armadillo&gt;</code><br />
<code>#include &lt;iomanip&gt;</code><br />
<code>#include &lt;sstream&gt;</code><br />
<code>#include &lt;string&gt;</code><br />
<code>#include &lt;vector&gt;</code><br />
</div>
<p><a href="utils_8hpp_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
@ -119,6 +120,11 @@ Macros</h2></td></tr>
<tr class="memitem:aecc1f7a8a2493b9e021e5bff76a00a5b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8hpp.html#aecc1f7a8a2493b9e021e5bff76a00a5b">DEBUG</a>(msg)</td></tr>
<tr class="memdesc:aecc1f7a8a2493b9e021e5bff76a00a5b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Writes a debug message. <br /></td></tr>
<tr class="separator:aecc1f7a8a2493b9e021e5bff76a00a5b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a73d4f21ad937dbc50a0c0538c78fd4f9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8hpp.html#a73d4f21ad937dbc50a0c0538c78fd4f9">ASSERT</a>(expr, msg)</td></tr>
<tr class="memdesc:a73d4f21ad937dbc50a0c0538c78fd4f9"><td class="mdescLeft">&#160;</td><td class="mdescRight">A prettier assertion function. <br /></td></tr>
<tr class="separator:a73d4f21ad937dbc50a0c0538c78fd4f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a60dca3177fb9cb5256609adc7af55168"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8hpp.html#a60dca3177fb9cb5256609adc7af55168">__METHOD_NAME__</a>&#160;&#160;&#160;methodName(__PRETTY_FUNCTION__)</td></tr>
<tr class="separator:a60dca3177fb9cb5256609adc7af55168"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
@ -128,6 +134,12 @@ Functions</h2></td></tr>
<tr class="memitem:ad54b96a1074f9df4dc892a41d115b72d"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8hpp.html#ad54b96a1074f9df4dc892a41d115b72d">scientific_format</a> (const std::vector&lt; double &gt; &amp;v, int width=20, int prec=10)</td></tr>
<tr class="memdesc:ad54b96a1074f9df4dc892a41d115b72d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Turns a vector of doubles into a string written in scientific format. <br /></td></tr>
<tr class="separator:ad54b96a1074f9df4dc892a41d115b72d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2cc3a2cdb635bac3c8b02e89d4d6af38"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8hpp.html#a2cc3a2cdb635bac3c8b02e89d4d6af38">m_assert</a> (bool expr, std::string expr_str, std::string func, std::string file, int line, std::string msg)</td></tr>
<tr class="memdesc:a2cc3a2cdb635bac3c8b02e89d4d6af38"><td class="mdescLeft">&#160;</td><td class="mdescRight">Test an expression, confirm that test is ok, or abort execution. <br /></td></tr>
<tr class="separator:a2cc3a2cdb635bac3c8b02e89d4d6af38"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0c95c4791692b06f8811905a76dbd772"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8hpp.html#a0c95c4791692b06f8811905a76dbd772">arma_vector_close_to</a> (arma::vec &amp;a, arma::vec &amp;b, double tol=1e-8)</td></tr>
<tr class="memdesc:a0c95c4791692b06f8811905a76dbd772"><td class="mdescLeft">&#160;</td><td class="mdescRight">Test if two armadillo vectors are close to each other. <br /></td></tr>
<tr class="separator:a0c95c4791692b06f8811905a76dbd772"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Function prototypes and macros that are useful. </p>
@ -140,6 +152,58 @@ Janita Ovidie Sandtrøen Willumsen (janitaws)</dd></dl>
<p class="definition">Definition in file <a class="el" href="utils_8hpp_source.html">utils.hpp</a>.</p>
</div><h2 class="groupheader">Macro Definition Documentation</h2>
<a id="a60dca3177fb9cb5256609adc7af55168" name="a60dca3177fb9cb5256609adc7af55168"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a60dca3177fb9cb5256609adc7af55168">&#9670;&#160;</a></span>__METHOD_NAME__</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define __METHOD_NAME__&#160;&#160;&#160;methodName(__PRETTY_FUNCTION__)</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="utils_8hpp_source.html#l00048">48</a> of file <a class="el" href="utils_8hpp_source.html">utils.hpp</a>.</p>
</div>
</div>
<a id="a73d4f21ad937dbc50a0c0538c78fd4f9" name="a73d4f21ad937dbc50a0c0538c78fd4f9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a73d4f21ad937dbc50a0c0538c78fd4f9">&#9670;&#160;</a></span>ASSERT</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define ASSERT</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">expr, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname">msg&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"> <a class="code hl_function" href="utils_8hpp.html#a2cc3a2cdb635bac3c8b02e89d4d6af38">m_assert</a>(expr, #expr, __METHOD_NAME__, __FILE__, \</div>
<div class="line"> __LINE__, msg)</div>
<div class="ttc" id="autils_8hpp_html_a2cc3a2cdb635bac3c8b02e89d4d6af38"><div class="ttname"><a href="utils_8hpp.html#a2cc3a2cdb635bac3c8b02e89d4d6af38">m_assert</a></div><div class="ttdeci">void m_assert(bool expr, std::string expr_str, std::string func, std::string file, int line, std::string msg)</div><div class="ttdoc">Test an expression, confirm that test is ok, or abort execution.</div><div class="ttdef"><b>Definition:</b> <a href="utils_8cpp_source.html#l00040">utils.cpp:40</a></div></div>
</div><!-- fragment -->
<p>A prettier assertion function. </p>
<p>This macro calls the m_assert function which is a more informative assertion function than the regular assert function from cassert. </p>
<p class="definition">Definition at line <a class="el" href="utils_8hpp_source.html#l00045">45</a> of file <a class="el" href="utils_8hpp_source.html">utils.hpp</a>.</p>
</div>
</div>
<a id="aecc1f7a8a2493b9e021e5bff76a00a5b" name="aecc1f7a8a2493b9e021e5bff76a00a5b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aecc1f7a8a2493b9e021e5bff76a00a5b">&#9670;&#160;</a></span>DEBUG</h2>
@ -157,13 +221,129 @@ Janita Ovidie Sandtrøen Willumsen (janitaws)</dd></dl>
</div><div class="memdoc">
<p>Writes a debug message. </p>
<p>This function writes a debug message that includes the filename, line number, and a custom message. The function is wrapped in an ifdef that checks if DBG is defined, so one can choose to display the debug messages by adding the -DDBG flag when compiling. </p>
<p>This macro writes a debug message that includes the filename, line number, and a custom message. The function is wrapped in an ifdef that checks if DBG is defined, so one can choose to display the debug messages by adding the -DDBG flag when compiling. </p>
<p class="definition">Definition at line <a class="el" href="utils_8hpp_source.html#l00035">35</a> of file <a class="el" href="utils_8hpp_source.html">utils.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="utils_8hpp_source.html#l00036">36</a> of file <a class="el" href="utils_8hpp_source.html">utils.hpp</a>.</p>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="a0c95c4791692b06f8811905a76dbd772" name="a0c95c4791692b06f8811905a76dbd772"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0c95c4791692b06f8811905a76dbd772">&#9670;&#160;</a></span>arma_vector_close_to()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool arma_vector_close_to </td>
<td>(</td>
<td class="paramtype">arma::vec &amp;&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">arma::vec &amp;&#160;</td>
<td class="paramname"><em>b</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>tol</em> = <code>1e-8</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Test if two armadillo vectors are close to each other. </p>
<p>This function takes in 2 vectors and checks if they are approximately equal to each other given a tolerance.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">a</td><td>Vector a </td></tr>
<tr><td class="paramname">b</td><td>Vector b </td></tr>
<tr><td class="paramname">tol</td><td>The tolerance</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Boolean </dd></dl>
<p class="definition">Definition at line <a class="el" href="utils_8cpp_source.html#l00059">59</a> of file <a class="el" href="utils_8cpp_source.html">utils.cpp</a>.</p>
</div>
</div>
<a id="a2cc3a2cdb635bac3c8b02e89d4d6af38" name="a2cc3a2cdb635bac3c8b02e89d4d6af38"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2cc3a2cdb635bac3c8b02e89d4d6af38">&#9670;&#160;</a></span>m_assert()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void m_assert </td>
<td>(</td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>expr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::string&#160;</td>
<td class="paramname"><em>expr_str</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::string&#160;</td>
<td class="paramname"><em>func</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::string&#160;</td>
<td class="paramname"><em>file</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>line</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::string&#160;</td>
<td class="paramname"><em>msg</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Test an expression, confirm that test is ok, or abort execution. </p>
<p>This function takes in an expression and prints an OK message if it's true, or it prints a fail message and aborts execution if it fails.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">expr</td><td>The expression to be evaluated </td></tr>
<tr><td class="paramname">expr_str</td><td>The stringified version of the expression </td></tr>
<tr><td class="paramname">func</td><td>The function name of the caller </td></tr>
<tr><td class="paramname">file</td><td>The file of the caller </td></tr>
<tr><td class="paramname">line</td><td>The line number where this function is called from </td></tr>
<tr><td class="paramname">msg</td><td>The message to be displayed </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="utils_8cpp_source.html#l00040">40</a> of file <a class="el" href="utils_8cpp_source.html">utils.cpp</a>.</p>
</div>
</div>
<a id="ad54b96a1074f9df4dc892a41d115b72d" name="ad54b96a1074f9df4dc892a41d115b72d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad54b96a1074f9df4dc892a41d115b72d">&#9670;&#160;</a></span>scientific_format() <span class="overload">[1/2]</span></h2>

View File

@ -1,6 +1,9 @@
var utils_8hpp =
[
[ "ASSERT", "utils_8hpp.html#a73d4f21ad937dbc50a0c0538c78fd4f9", null ],
[ "DEBUG", "utils_8hpp.html#aecc1f7a8a2493b9e021e5bff76a00a5b", null ],
[ "arma_vector_close_to", "utils_8hpp.html#a0c95c4791692b06f8811905a76dbd772", null ],
[ "m_assert", "utils_8hpp.html#a2cc3a2cdb635bac3c8b02e89d4d6af38", null ],
[ "scientific_format", "utils_8hpp.html#ad54b96a1074f9df4dc892a41d115b72d", null ],
[ "scientific_format", "utils_8hpp.html#adfb618b2fdff47ef30a4a2b62c04f384", null ]
];

View File

@ -105,25 +105,54 @@ $(document).ready(function(){initNavTree('utils_8hpp_source.html',''); initResiz
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="preprocessor">#ifndef __UTILS__</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="preprocessor">#define __UTILS__</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span> </div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="preprocessor">#include &lt;string&gt;</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="preprocessor">#include &lt;vector&gt;</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="preprocessor">#include &lt;iomanip&gt;</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="preprocessor">#include &lt;sstream&gt;</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> </div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="preprocessor">#ifdef DBG</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="preprocessor"> #define DEBUG(msg) std::cout &lt;&lt; __FILE__ &lt;&lt; &quot; &quot;</span> &lt;&lt; __LINE__ &lt;&lt; &quot;: &quot; \</div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> &lt;&lt; msg &lt;&lt; std::endl</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"><a class="line" href="utils_8hpp.html#aecc1f7a8a2493b9e021e5bff76a00a5b"> 35</a></span><span class="preprocessor"> #define DEBUG(msg)</span></div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> </div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span>std::string <a class="code hl_function" href="utils_8hpp.html#adfb618b2fdff47ef30a4a2b62c04f384">scientific_format</a>(<span class="keywordtype">double</span> d, <span class="keywordtype">int</span> width=20, <span class="keywordtype">int</span> prec=10);</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> </div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span>std::string <a class="code hl_function" href="utils_8hpp.html#adfb618b2fdff47ef30a4a2b62c04f384">scientific_format</a>(<span class="keyword">const</span> std::vector&lt;double&gt;&amp; v, </div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> <span class="keywordtype">int</span> width=20, </div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> <span class="keywordtype">int</span> prec=10);</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> </div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="preprocessor">#include &lt;armadillo&gt;</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="preprocessor">#include &lt;iomanip&gt;</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="preprocessor">#include &lt;sstream&gt;</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="preprocessor">#include &lt;string&gt;</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="preprocessor">#include &lt;vector&gt;</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> </div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="preprocessor">#ifdef DBG</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="preprocessor"> #define DEBUG(msg) std::cout &lt;&lt; __FILE__ &lt;&lt; &quot; &quot;</span> &lt;&lt; __LINE__ &lt;&lt; &quot;: &quot; \</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> &lt;&lt; msg &lt;&lt; std::endl</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"><a class="line" href="utils_8hpp.html#aecc1f7a8a2493b9e021e5bff76a00a5b"> 36</a></span><span class="preprocessor"> #define DEBUG(msg)</span></div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> </div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"><a class="line" href="utils_8hpp.html#a73d4f21ad937dbc50a0c0538c78fd4f9"> 45</a></span><span class="preprocessor">#define ASSERT(expr, msg) m_assert(expr, #expr, __METHOD_NAME__, __FILE__, \</span></div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span><span class="preprocessor"> __LINE__, msg)</span></div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> </div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span><span class="preprocessor">#define __METHOD_NAME__ methodName(__PRETTY_FUNCTION__)</span></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> </div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> </div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span>std::string <a class="code hl_function" href="utils_8hpp.html#adfb618b2fdff47ef30a4a2b62c04f384">scientific_format</a>(<span class="keywordtype">double</span> d, <span class="keywordtype">int</span> width=20, <span class="keywordtype">int</span> prec=10);</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> </div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span>std::string <a class="code hl_function" href="utils_8hpp.html#adfb618b2fdff47ef30a4a2b62c04f384">scientific_format</a>(<span class="keyword">const</span> std::vector&lt;double&gt;&amp; v, </div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> <span class="keywordtype">int</span> width=20, </div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> <span class="keywordtype">int</span> prec=10);</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> </div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span><span class="keywordtype">void</span> <a class="code hl_function" href="utils_8hpp.html#a2cc3a2cdb635bac3c8b02e89d4d6af38">m_assert</a>(<span class="keywordtype">bool</span> expr, </div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> std::string expr_str, </div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> std::string func, </div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> std::string file, </div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> <span class="keywordtype">int</span> line,</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> std::string msg);</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> </div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> </div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span><span class="keywordtype">bool</span> <a class="code hl_function" href="utils_8hpp.html#a0c95c4791692b06f8811905a76dbd772">arma_vector_close_to</a>(arma::vec &amp;a, arma::vec &amp;b, <span class="keywordtype">double</span> tol=1e-8);</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> </div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> </div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span><span class="keyword">static</span> <span class="keyword">inline</span> std::string methodName(<span class="keyword">const</span> std::string&amp; prettyFunction)</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span>{</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> <span class="keywordtype">size_t</span> colons = prettyFunction.find(<span class="stringliteral">&quot;::&quot;</span>);</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> <span class="keywordtype">size_t</span> begin = prettyFunction.substr(0,colons).rfind(<span class="stringliteral">&quot; &quot;</span>) + 1;</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> <span class="keywordtype">size_t</span> end = prettyFunction.rfind(<span class="stringliteral">&quot;(&quot;</span>) - begin;</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> </div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> <span class="keywordflow">return</span> prettyFunction.substr(begin,end) + <span class="stringliteral">&quot;()&quot;</span>;</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span>}</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> </div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span><span class="preprocessor">#endif</span></div>
<div class="ttc" id="autils_8hpp_html_a0c95c4791692b06f8811905a76dbd772"><div class="ttname"><a href="utils_8hpp.html#a0c95c4791692b06f8811905a76dbd772">arma_vector_close_to</a></div><div class="ttdeci">bool arma_vector_close_to(arma::vec &amp;a, arma::vec &amp;b, double tol=1e-8)</div><div class="ttdoc">Test if two armadillo vectors are close to each other.</div><div class="ttdef"><b>Definition:</b> <a href="utils_8cpp_source.html#l00059">utils.cpp:59</a></div></div>
<div class="ttc" id="autils_8hpp_html_a2cc3a2cdb635bac3c8b02e89d4d6af38"><div class="ttname"><a href="utils_8hpp.html#a2cc3a2cdb635bac3c8b02e89d4d6af38">m_assert</a></div><div class="ttdeci">void m_assert(bool expr, std::string expr_str, std::string func, std::string file, int line, std::string msg)</div><div class="ttdoc">Test an expression, confirm that test is ok, or abort execution.</div><div class="ttdef"><b>Definition:</b> <a href="utils_8cpp_source.html#l00040">utils.cpp:40</a></div></div>
<div class="ttc" id="autils_8hpp_html_adfb618b2fdff47ef30a4a2b62c04f384"><div class="ttname"><a href="utils_8hpp.html#adfb618b2fdff47ef30a4a2b62c04f384">scientific_format</a></div><div class="ttdeci">std::string scientific_format(double d, int width=20, int prec=10)</div><div class="ttdoc">Turns a double into a string written in scientific format.</div><div class="ttdef"><b>Definition:</b> <a href="utils_8cpp_source.html#l00014">utils.cpp:14</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->

View File

@ -1,4 +1,4 @@
.TH "Particle" 3 "Mon Oct 2 2023" "Penning Trap Simulation" \" -*- nroff -*-
.TH "Particle" 3 "Sun Oct 8 2023" "Penning Trap Simulation" \" -*- nroff -*-
.ad l
.nh
.SH NAME

View File

@ -1,4 +1,4 @@
.TH "src/Particle.cpp" 3 "Mon Oct 2 2023" "Penning Trap Simulation" \" -*- nroff -*-
.TH "src/Particle.cpp" 3 "Sun Oct 8 2023" "Penning Trap Simulation" \" -*- nroff -*-
.ad l
.nh
.SH NAME

View File

@ -1,4 +1,4 @@
.TH "include/Particle.hpp" 3 "Mon Oct 2 2023" "Penning Trap Simulation" \" -*- nroff -*-
.TH "include/Particle.hpp" 3 "Sun Oct 8 2023" "Penning Trap Simulation" \" -*- nroff -*-
.ad l
.nh
.SH NAME

View File

@ -1,4 +1,4 @@
.TH "PenningTrap" 3 "Mon Oct 2 2023" "Penning Trap Simulation" \" -*- nroff -*-
.TH "PenningTrap" 3 "Sun Oct 8 2023" "Penning Trap Simulation" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@ -85,7 +85,7 @@ A class that simulates a Penning trap\&.
This class simulates a Penning trap\&. It can take in a number of particles and simulate how they would behave inside a Penning trap\&.
.PP
Definition at line \fB25\fP of file \fBPenningTrap\&.hpp\fP\&.
Definition at line \fB29\fP of file \fBPenningTrap\&.hpp\fP\&.
.SH "Constructor & Destructor Documentation"
.PP
.SS "PenningTrap::PenningTrap (double B_0 = \fC\fBT\fP\fP, double V_0 = \fC25\&.*\fBV\fP/1000\&.\fP, double d = \fC500\&.\fP)"
@ -93,7 +93,7 @@ Definition at line \fB25\fP of file \fBPenningTrap\&.hpp\fP\&.
.PP
Set B_0, V_0 and d\&.
.PP
Definition at line \fB26\fP of file \fBPenningTrap\&.cpp\fP\&.
Definition at line \fB20\fP of file \fBPenningTrap\&.cpp\fP\&.
.SH "Member Function Documentation"
.PP
.SS "void PenningTrap::add_particle (\fBParticle\fP particle)"
@ -101,63 +101,63 @@ Definition at line \fB26\fP of file \fBPenningTrap\&.cpp\fP\&.
.PP
Add a particle to the system\&.
.PP
Definition at line \fB33\fP of file \fBPenningTrap\&.cpp\fP\&.
Definition at line \fB27\fP of file \fBPenningTrap\&.cpp\fP\&.
.SS "void PenningTrap::evolve_forward_euler (double dt)"
.PP
Go forward one timestep using the forward Euler method\&.
.PP
Definition at line \fB121\fP of file \fBPenningTrap\&.cpp\fP\&.
Definition at line \fB167\fP of file \fBPenningTrap\&.cpp\fP\&.
.SS "void PenningTrap::evolve_RK4 (double dt)"
.PP
Go forward one timestep using the RK4 method\&.
.PP
Definition at line \fB116\fP of file \fBPenningTrap\&.cpp\fP\&.
Definition at line \fB104\fP of file \fBPenningTrap\&.cpp\fP\&.
.SS "arma::vec PenningTrap::external_B_field (arma::vec r)"
.PP
Calculate B at point r\&.
.PP
Definition at line \fB49\fP of file \fBPenningTrap\&.cpp\fP\&.
Definition at line \fB43\fP of file \fBPenningTrap\&.cpp\fP\&.
.SS "arma::vec PenningTrap::external_E_field (arma::vec r)"
.PP
Calculate E at point r\&.
.PP
Definition at line \fB38\fP of file \fBPenningTrap\&.cpp\fP\&.
Definition at line \fB32\fP of file \fBPenningTrap\&.cpp\fP\&.
.SS "arma::vec PenningTrap::force_on_particle (int i, int j)"
.PP
Calculate the force between 2 particles\&. Calculate the force exhibited on particle p_i from particle p_j\&.
.PP
Definition at line \fB59\fP of file \fBPenningTrap\&.cpp\fP\&.
Definition at line \fB50\fP of file \fBPenningTrap\&.cpp\fP\&.
.SS "double PenningTrap::get_d ()"
.PP
Definition at line \fB142\fP of file \fBPenningTrap\&.cpp\fP\&.
Definition at line \fB188\fP of file \fBPenningTrap\&.cpp\fP\&.
.SS "arma::vec PenningTrap::get_particle (int i)"
.PP
Definition at line \fB137\fP of file \fBPenningTrap\&.cpp\fP\&.
Definition at line \fB183\fP of file \fBPenningTrap\&.cpp\fP\&.
.SS "arma::vec PenningTrap::total_force (int i)"
.PP
calculate the total force on a particle\&.
.PP
Definition at line \fB111\fP of file \fBPenningTrap\&.cpp\fP\&.
Definition at line \fB99\fP of file \fBPenningTrap\&.cpp\fP\&.
.SS "arma::vec PenningTrap::total_force_external (int i)"
.PP
Calculate the total external force on a particle\&. Calculate the total amount of force that E and B exhibits on particle p_i\&.
.PP
Definition at line \fB74\fP of file \fBPenningTrap\&.cpp\fP\&.
Definition at line \fB65\fP of file \fBPenningTrap\&.cpp\fP\&.
.SS "arma::vec PenningTrap::total_force_particles (int i)"
.PP
Calculate the total force on a particle from other particles\&.
.PP
Definition at line \fB92\fP of file \fBPenningTrap\&.cpp\fP\&.
Definition at line \fB80\fP of file \fBPenningTrap\&.cpp\fP\&.
.SH "Member Data Documentation"
.PP
.SS "double PenningTrap::B_0\fC [private]\fP"
@ -165,25 +165,25 @@ Definition at line \fB92\fP of file \fBPenningTrap\&.cpp\fP\&.
.PP
Magnetic field strength\&.
.PP
Definition at line \fB27\fP of file \fBPenningTrap\&.hpp\fP\&.
Definition at line \fB31\fP of file \fBPenningTrap\&.hpp\fP\&.
.SS "double PenningTrap::d\fC [private]\fP"
.PP
Characteristic dimension\&.
.PP
Definition at line \fB29\fP of file \fBPenningTrap\&.hpp\fP\&.
Definition at line \fB33\fP of file \fBPenningTrap\&.hpp\fP\&.
.SS "std::vector<\fBParticle\fP> PenningTrap::particles\fC [private]\fP"
.PP
The particles in the Penning trap\&.
.PP
Definition at line \fB30\fP of file \fBPenningTrap\&.hpp\fP\&.
Definition at line \fB34\fP of file \fBPenningTrap\&.hpp\fP\&.
.SS "double PenningTrap::V_0\fC [private]\fP"
.PP
Applied potential\&.
.PP
Definition at line \fB28\fP of file \fBPenningTrap\&.hpp\fP\&.
Definition at line \fB32\fP of file \fBPenningTrap\&.hpp\fP\&.
.SH "Author"
.PP

View File

@ -1,4 +1,4 @@
.TH "src/PenningTrap.cpp" 3 "Mon Oct 2 2023" "Penning Trap Simulation" \" -*- nroff -*-
.TH "src/PenningTrap.cpp" 3 "Sun Oct 8 2023" "Penning Trap Simulation" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@ -7,17 +7,11 @@ src/PenningTrap.cpp \- The implementation of the \fBPenningTrap\fP class\&.
.SH SYNOPSIS
.br
.PP
\fC#include 'utils\&.hpp'\fP
.br
\fC#include 'PenningTrap\&.hpp'\fP
.br
\fC#include 'constants\&.hpp'\fP
.br
\fC#include <algorithm>\fP
.br
\fC#include <stdexcept>\fP
.br
\fC#include <omp\&.h>\fP
\fC#include 'utils\&.hpp'\fP
.br
.SH "Detailed Description"

View File

@ -1,4 +1,4 @@
.TH "include/PenningTrap.hpp" 3 "Mon Oct 2 2023" "Penning Trap Simulation" \" -*- nroff -*-
.TH "include/PenningTrap.hpp" 3 "Sun Oct 8 2023" "Penning Trap Simulation" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@ -9,10 +9,12 @@ include/PenningTrap.hpp \- A class for simulating a Penning trap\&.
.PP
\fC#include <armadillo>\fP
.br
\fC#include 'constants\&.hpp'\fP
\fC#include <omp\&.h>\fP
.br
\fC#include 'Particle\&.hpp'\fP
.br
\fC#include 'constants\&.hpp'\fP
.br
.SS "Classes"

View File

@ -0,0 +1,56 @@
.TH "PenningTrapTest" 3 "Sun Oct 8 2023" "Penning Trap Simulation" \" -*- nroff -*-
.ad l
.nh
.SH NAME
PenningTrapTest
.SH SYNOPSIS
.br
.PP
.SS "Static Public Member Functions"
.in +1c
.ti -1c
.RI "static void \fBtest_external_E_field\fP ()"
.br
.ti -1c
.RI "static void \fBtest_external_B_field\fP ()"
.br
.ti -1c
.RI "static void \fBtest_force_on_particle\fP ()"
.br
.ti -1c
.RI "static void \fBtest_total_force_external\fP ()"
.br
.ti -1c
.RI "static void \fBtest_total_force_particles\fP ()"
.br
.in -1c
.SH "Detailed Description"
.PP
Definition at line \fB20\fP of file \fBtest_suite\&.cpp\fP\&.
.SH "Member Function Documentation"
.PP
.SS "static void PenningTrapTest::test_external_B_field ()\fC [inline]\fP, \fC [static]\fP"
.PP
Definition at line \fB59\fP of file \fBtest_suite\&.cpp\fP\&.
.SS "static void PenningTrapTest::test_external_E_field ()\fC [inline]\fP, \fC [static]\fP"
.PP
Definition at line \fB22\fP of file \fBtest_suite\&.cpp\fP\&.
.SS "static void PenningTrapTest::test_force_on_particle ()\fC [inline]\fP, \fC [static]\fP"
.PP
Definition at line \fB70\fP of file \fBtest_suite\&.cpp\fP\&.
.SS "static void PenningTrapTest::test_total_force_external ()\fC [inline]\fP, \fC [static]\fP"
.PP
Definition at line \fB95\fP of file \fBtest_suite\&.cpp\fP\&.
.SS "static void PenningTrapTest::test_total_force_particles ()\fC [inline]\fP, \fC [static]\fP"
.PP
Definition at line \fB108\fP of file \fBtest_suite\&.cpp\fP\&.
.SH "Author"
.PP
Generated automatically by Doxygen for Penning Trap Simulation from the source code\&.

View File

@ -1,4 +1,4 @@
.TH "bug" 3 "Mon Oct 2 2023" "Penning Trap Simulation" \" -*- nroff -*-
.TH "bug" 3 "Sun Oct 8 2023" "Penning Trap Simulation" \" -*- nroff -*-
.ad l
.nh
.SH NAME

View File

@ -1,4 +1,4 @@
.TH "include/constants.hpp" 3 "Mon Oct 2 2023" "Penning Trap Simulation" \" -*- nroff -*-
.TH "include/constants.hpp" 3 "Sun Oct 8 2023" "Penning Trap Simulation" \" -*- nroff -*-
.ad l
.nh
.SH NAME

View File

@ -1,4 +1,4 @@
.TH "src/main.cpp" 3 "Mon Oct 2 2023" "Penning Trap Simulation" \" -*- nroff -*-
.TH "src/main.cpp" 3 "Sun Oct 8 2023" "Penning Trap Simulation" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@ -7,12 +7,8 @@ src/main.cpp \- The main program for this project\&.
.SH SYNOPSIS
.br
.PP
\fC#include <filesystem>\fP
.br
\fC#include <fstream>\fP
.br
\fC#include <string>\fP
.br
\fC#include <omp\&.h>\fP
.br
\fC#include <sys/stat\&.h>\fP
@ -40,7 +36,7 @@ src/main.cpp \- The main program for this project\&.
.in +1c
.ti -1c
.RI "void \fBeuler_100_particles\fP ()"
.RI "void \fBsimulate_100_particles\fP ()"
.br
.ti -1c
.RI "int \fBmain\fP ()"
@ -78,29 +74,29 @@ Definition in file \fBmain\&.cpp\fP\&.
.SS "#define CHARGE 1\&."
.PP
Definition at line \fB23\fP of file \fBmain\&.cpp\fP\&.
Definition at line \fB21\fP of file \fBmain\&.cpp\fP\&.
.SS "#define MASS 40\&."
.PP
Definition at line \fB24\fP of file \fBmain\&.cpp\fP\&.
Definition at line \fB22\fP of file \fBmain\&.cpp\fP\&.
.SS "#define N 10000"
.PP
Definition at line \fB22\fP of file \fBmain\&.cpp\fP\&.
Definition at line \fB20\fP of file \fBmain\&.cpp\fP\&.
.SS "#define PARTICLES 100"
.PP
Definition at line \fB21\fP of file \fBmain\&.cpp\fP\&.
Definition at line \fB19\fP of file \fBmain\&.cpp\fP\&.
.SH "Function Documentation"
.PP
.SS "void euler_100_particles ()"
.PP
Definition at line \fB26\fP of file \fBmain\&.cpp\fP\&.
.SS "int main ()"
.PP
Definition at line \fB77\fP of file \fBmain\&.cpp\fP\&.
.SS "void simulate_100_particles ()"
.PP
Definition at line \fB24\fP of file \fBmain\&.cpp\fP\&.
.SH "Author"
.PP
Generated automatically by Doxygen for Penning Trap Simulation from the source code\&.

View File

@ -1,4 +1,4 @@
.TH "src/test_suite.cpp" 3 "Mon Oct 2 2023" "Penning Trap Simulation" \" -*- nroff -*-
.TH "src/test_suite.cpp" 3 "Sun Oct 8 2023" "Penning Trap Simulation" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@ -7,6 +7,24 @@ src/test_suite.cpp \- The test suite for the project\&.
.SH SYNOPSIS
.br
.PP
\fC#include 'PenningTrap\&.hpp'\fP
.br
\fC#include 'utils\&.hpp'\fP
.br
\fC#include <iomanip>\fP
.br
\fC#include <sstream>\fP
.br
\fC#include <string>\fP
.br
.SS "Classes"
.in +1c
.ti -1c
.RI "class \fBPenningTrapTest\fP"
.br
.in -1c
.SS "Functions"
.in +1c
@ -46,7 +64,7 @@ Definition in file \fBtest_suite\&.cpp\fP\&.
.SS "int main ()"
.PP
Definition at line \fB12\fP of file \fBtest_suite\&.cpp\fP\&.
Definition at line \fB135\fP of file \fBtest_suite\&.cpp\fP\&.
.SH "Author"
.PP
Generated automatically by Doxygen for Penning Trap Simulation from the source code\&.

View File

@ -1,4 +1,4 @@
.TH "todo" 3 "Mon Oct 2 2023" "Penning Trap Simulation" \" -*- nroff -*-
.TH "todo" 3 "Sun Oct 8 2023" "Penning Trap Simulation" \" -*- nroff -*-
.ad l
.nh
.SH NAME

View File

@ -1,4 +1,4 @@
.TH "src/utils.cpp" 3 "Mon Oct 2 2023" "Penning Trap Simulation" \" -*- nroff -*-
.TH "src/utils.cpp" 3 "Sun Oct 8 2023" "Penning Trap Simulation" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@ -21,6 +21,14 @@ src/utils.cpp \- Implementation of the utils\&.
.RI "std::string \fBscientific_format\fP (const std::vector< double > &v, int width, int prec)"
.br
.RI "Turns a vector of doubles into a string written in scientific format\&. "
.ti -1c
.RI "void \fBm_assert\fP (bool expr, std::string expr_str, std::string f, std::string file, int line, std::string msg)"
.br
.RI "Test an expression, confirm that test is ok, or abort execution\&. "
.ti -1c
.RI "bool \fBarma_vector_close_to\fP (arma::vec &a, arma::vec &b, double tol)"
.br
.RI "Test if two armadillo vectors are close to each other\&. "
.in -1c
.SH "Detailed Description"
.PP
@ -51,6 +59,51 @@ No known bugs
Definition in file \fButils\&.cpp\fP\&.
.SH "Function Documentation"
.PP
.SS "bool arma_vector_close_to (arma::vec & a, arma::vec & b, double tol = \fC1e\-8\fP)"
.PP
Test if two armadillo vectors are close to each other\&. This function takes in 2 vectors and checks if they are approximately equal to each other given a tolerance\&.
.PP
\fBParameters\fP
.RS 4
\fIa\fP Vector a
.br
\fIb\fP Vector b
.br
\fItol\fP The tolerance
.RE
.PP
\fBReturns\fP
.RS 4
Boolean
.RE
.PP
.PP
Definition at line \fB59\fP of file \fButils\&.cpp\fP\&.
.SS "void m_assert (bool expr, std::string expr_str, std::string func, std::string file, int line, std::string msg)"
.PP
Test an expression, confirm that test is ok, or abort execution\&. This function takes in an expression and prints an OK message if it's true, or it prints a fail message and aborts execution if it fails\&.
.PP
\fBParameters\fP
.RS 4
\fIexpr\fP The expression to be evaluated
.br
\fIexpr_str\fP The stringified version of the expression
.br
\fIfunc\fP The function name of the caller
.br
\fIfile\fP The file of the caller
.br
\fIline\fP The line number where this function is called from
.br
\fImsg\fP The message to be displayed
.RE
.PP
.PP
Definition at line \fB40\fP of file \fButils\&.cpp\fP\&.
.SS "std::string scientific_format (const std::vector< double > & v, int width = \fC20\fP, int prec = \fC10\fP)"
.PP

View File

@ -1,4 +1,4 @@
.TH "include/utils.hpp" 3 "Mon Oct 2 2023" "Penning Trap Simulation" \" -*- nroff -*-
.TH "include/utils.hpp" 3 "Sun Oct 8 2023" "Penning Trap Simulation" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@ -7,14 +7,16 @@ include/utils.hpp \- Function prototypes and macros that are useful\&.
.SH SYNOPSIS
.br
.PP
\fC#include <string>\fP
.br
\fC#include <vector>\fP
\fC#include <armadillo>\fP
.br
\fC#include <iomanip>\fP
.br
\fC#include <sstream>\fP
.br
\fC#include <string>\fP
.br
\fC#include <vector>\fP
.br
.SS "Macros"
@ -23,6 +25,13 @@ include/utils.hpp \- Function prototypes and macros that are useful\&.
.RI "#define \fBDEBUG\fP(msg)"
.br
.RI "Writes a debug message\&. "
.ti -1c
.RI "#define \fBASSERT\fP(expr, msg)"
.br
.RI "A prettier assertion function\&. "
.ti -1c
.RI "#define \fB__METHOD_NAME__\fP methodName(__PRETTY_FUNCTION__)"
.br
.in -1c
.SS "Functions"
@ -35,6 +44,14 @@ include/utils.hpp \- Function prototypes and macros that are useful\&.
.RI "std::string \fBscientific_format\fP (const std::vector< double > &v, int width=20, int prec=10)"
.br
.RI "Turns a vector of doubles into a string written in scientific format\&. "
.ti -1c
.RI "void \fBm_assert\fP (bool expr, std::string expr_str, std::string func, std::string file, int line, std::string msg)"
.br
.RI "Test an expression, confirm that test is ok, or abort execution\&. "
.ti -1c
.RI "bool \fBarma_vector_close_to\fP (arma::vec &a, arma::vec &b, double tol=1e\-8)"
.br
.RI "Test if two armadillo vectors are close to each other\&. "
.in -1c
.SH "Detailed Description"
.PP
@ -67,14 +84,74 @@ No known bugs
Definition in file \fButils\&.hpp\fP\&.
.SH "Macro Definition Documentation"
.PP
.SS "#define __METHOD_NAME__ methodName(__PRETTY_FUNCTION__)"
.PP
Definition at line \fB48\fP of file \fButils\&.hpp\fP\&.
.SS "#define ASSERT(expr, msg)"
\fBValue:\fP.PP
.nf
m_assert(expr, #expr, __METHOD_NAME__, __FILE__, \\
__LINE__, msg)
.fi
.PP
A prettier assertion function\&. This macro calls the m_assert function which is a more informative assertion function than the regular assert function from cassert\&.
.PP
Definition at line \fB45\fP of file \fButils\&.hpp\fP\&.
.SS "#define DEBUG(msg)"
.PP
Writes a debug message\&. This function writes a debug message that includes the filename, line number, and a custom message\&. The function is wrapped in an ifdef that checks if DBG is defined, so one can choose to display the debug messages by adding the -DDBG flag when compiling\&.
Writes a debug message\&. This macro writes a debug message that includes the filename, line number, and a custom message\&. The function is wrapped in an ifdef that checks if DBG is defined, so one can choose to display the debug messages by adding the -DDBG flag when compiling\&.
.PP
Definition at line \fB35\fP of file \fButils\&.hpp\fP\&.
Definition at line \fB36\fP of file \fButils\&.hpp\fP\&.
.SH "Function Documentation"
.PP
.SS "bool arma_vector_close_to (arma::vec & a, arma::vec & b, double tol = \fC1e\-8\fP)"
.PP
Test if two armadillo vectors are close to each other\&. This function takes in 2 vectors and checks if they are approximately equal to each other given a tolerance\&.
.PP
\fBParameters\fP
.RS 4
\fIa\fP Vector a
.br
\fIb\fP Vector b
.br
\fItol\fP The tolerance
.RE
.PP
\fBReturns\fP
.RS 4
Boolean
.RE
.PP
.PP
Definition at line \fB59\fP of file \fButils\&.cpp\fP\&.
.SS "void m_assert (bool expr, std::string expr_str, std::string func, std::string file, int line, std::string msg)"
.PP
Test an expression, confirm that test is ok, or abort execution\&. This function takes in an expression and prints an OK message if it's true, or it prints a fail message and aborts execution if it fails\&.
.PP
\fBParameters\fP
.RS 4
\fIexpr\fP The expression to be evaluated
.br
\fIexpr_str\fP The stringified version of the expression
.br
\fIfunc\fP The function name of the caller
.br
\fIfile\fP The file of the caller
.br
\fIline\fP The line number where this function is called from
.br
\fImsg\fP The message to be displayed
.RE
.PP
.PP
Definition at line \fB40\fP of file \fButils\&.cpp\fP\&.
.SS "std::string scientific_format (const std::vector< double > & v, int width = \fC20\fP, int prec = \fC10\fP)"
.PP