Merge pull request #3 from FYS3150-G2-2023/coryab/implement-Penningtrap

Coryab/implement penningtrap
This commit is contained in:
Cory Balaton 2023-10-02 21:53:15 +02:00 committed by GitHub Enterprise
commit 9bf313ef02
36 changed files with 950 additions and 219 deletions

View File

@ -68,7 +68,7 @@ PROJECT_LOGO =
# entered, it will be relative to the location where doxygen was started. If # entered, it will be relative to the location where doxygen was started. If
# left blank the current directory will be used. # left blank the current directory will be used.
OUTPUT_DIRECTORY = docs OUTPUT_DIRECTORY =
# If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096 # If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096
# sub-directories (in 2 levels) under the output directory of each output format # sub-directories (in 2 levels) under the output directory of each output format
@ -1303,7 +1303,7 @@ GENERATE_HTML = YES
# The default directory is: html. # The default directory is: html.
# This tag requires that the tag GENERATE_HTML is set to YES. # This tag requires that the tag GENERATE_HTML is set to YES.
HTML_OUTPUT = html HTML_OUTPUT = docs
# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each # The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
# generated HTML page (for example: .htm, .php, .asp). # generated HTML page (for example: .htm, .php, .asp).
@ -2183,7 +2183,7 @@ GENERATE_MAN = YES
# The default directory is: man. # The default directory is: man.
# This tag requires that the tag GENERATE_MAN is set to YES. # This tag requires that the tag GENERATE_MAN is set to YES.
MAN_OUTPUT = man MAN_OUTPUT = man_pages
# The MAN_EXTENSION tag determines the extension that is added to the generated # The MAN_EXTENSION tag determines the extension that is added to the generated
# man pages. In case the manual section does not start with a number, the number # man pages. In case the manual section does not start with a number, the number

View File

@ -114,7 +114,6 @@ $(document).ready(function(){initNavTree('Particle_8cpp.html',''); initResizable
Janita Ovidie Sandtrøen Willumsen (janitaws)</dd></dl> Janita Ovidie Sandtrøen Willumsen (janitaws)</dd></dl>
<dl class="section version"><dt>Version</dt><dd>0.1</dd></dl> <dl class="section version"><dt>Version</dt><dd>0.1</dd></dl>
<dl class="bug"><dt><b><a class="el" href="bug.html#_bug000006">Bug:</a></b></dt><dd>No known bugs</dd></dl> <dl class="bug"><dt><b><a class="el" href="bug.html#_bug000006">Bug:</a></b></dt><dd>No known bugs</dd></dl>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000001">Todo:</a></b></dt><dd>Implement constructor </dd></dl>
<p class="definition">Definition in file <a class="el" href="Particle_8cpp_source.html">Particle.cpp</a>.</p> <p class="definition">Definition in file <a class="el" href="Particle_8cpp_source.html">Particle.cpp</a>.</p>
</div></div><!-- contents --> </div></div><!-- contents -->

View File

@ -102,16 +102,24 @@ $(document).ready(function(){initNavTree('Particle_8cpp_source.html',''); initRe
</div><!--header--> </div><!--header-->
<div class="contents"> <div class="contents">
<a href="Particle_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> <a href="Particle_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="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="preprocessor">#include &quot;<a class="code" href="Particle_8hpp.html">Particle.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="Particle_8hpp.html">Particle.hpp</a>&quot;</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span> </div> <div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span> </div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"><a class="line" href="classParticle.html#a00e108823877a25513ccae7cac011b4c"> 17</a></span><a class="code hl_function" href="classParticle.html#a00e108823877a25513ccae7cac011b4c">Particle::Particle</a>(<span class="keywordtype">double</span> q, <span class="keywordtype">double</span> m,</div> <div class="line"><a id="l00016" name="l00016"></a><span class="lineno"><a class="line" href="classParticle.html#a00e108823877a25513ccae7cac011b4c"> 16</a></span><a class="code hl_function" href="classParticle.html#a00e108823877a25513ccae7cac011b4c">Particle::Particle</a>(<span class="keywordtype">double</span> q, <span class="keywordtype">double</span> m,</div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span> arma::vec::fixed&lt;3&gt; r_vec,</div> <div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span> arma::vec::fixed&lt;3&gt; r_vec,</div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> arma::vec::fixed&lt;3&gt; v_vec)</div> <div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span> arma::vec::fixed&lt;3&gt; v_vec)</div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span>{</div> <div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span>{</div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span> </div> <div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span> <span class="comment">// Giving the particle its properties</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span>}</div> <div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span> this-&gt;q = <a class="code hl_variable" href="classParticle.html#a566dcc1de4bdc01251776948798ea8e1">q</a>;</div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> this-&gt;m = <a class="code hl_variable" href="classParticle.html#aedcc7e1bc53b0e2b1a4a07c9a1b47563">m</a>;</div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> this-&gt;r_vec = <a class="code hl_variable" href="classParticle.html#acf1a0f3c978b06d76df5bb4279594467">r_vec</a>;</div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> this-&gt;v_vec = <a class="code hl_variable" href="classParticle.html#a4a5d22c7aeca66f67d083f270cba25df">v_vec</a>;</div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</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="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_a00e108823877a25513ccae7cac011b4c"><div class="ttname"><a href="classParticle.html#a00e108823877a25513ccae7cac011b4c">Particle::Particle</a></div><div class="ttdeci">Particle(double q, double m, arma::vec::fixed&lt; 3 &gt; r_vec, arma::vec::fixed&lt; 3 &gt; v_vec)</div><div class="ttdoc">Initialize the particle.</div><div class="ttdef"><b>Definition:</b> <a href="Particle_8cpp_source.html#l00017">Particle.cpp:17</a></div></div> <div class="ttc" id="aclassParticle_html_a00e108823877a25513ccae7cac011b4c"><div class="ttname"><a href="classParticle.html#a00e108823877a25513ccae7cac011b4c">Particle::Particle</a></div><div class="ttdeci">Particle(double q, double m, arma::vec::fixed&lt; 3 &gt; r_vec, arma::vec::fixed&lt; 3 &gt; v_vec)</div><div class="ttdoc">Initialize the particle.</div><div class="ttdef"><b>Definition:</b> <a href="Particle_8cpp_source.html#l00016">Particle.cpp:16</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><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content --> </div><!-- doc-content -->
<!-- start footer part --> <!-- start footer part -->

View File

@ -104,7 +104,12 @@ $(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. <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> <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 /> <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 />
<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 />
</div> </div>
<p><a href="PenningTrap_8cpp_source.html">Go to the source code of this file.</a></p> <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> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
@ -114,15 +119,7 @@ $(document).ready(function(){initNavTree('PenningTrap_8cpp.html',''); initResiza
Janita Ovidie Sandtrøen Willumsen (janitaws)</dd></dl> Janita Ovidie Sandtrøen Willumsen (janitaws)</dd></dl>
<dl class="section version"><dt>Version</dt><dd>0.1</dd></dl> <dl class="section version"><dt>Version</dt><dd>0.1</dd></dl>
<dl class="bug"><dt><b><a class="el" href="bug.html#_bug000007">Bug:</a></b></dt><dd>No known bugs</dd></dl> <dl class="bug"><dt><b><a class="el" href="bug.html#_bug000007">Bug:</a></b></dt><dd>No known bugs</dd></dl>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000002">Todo:</a></b></dt><dd><p class="startdd">Implement constructor </p> <dl class="todo"><dt><b><a class="el" href="todo.html#_todo000001">Todo:</a></b></dt><dd><p class="startdd">Implement evolve_RK4 </p>
<p class="interdd">Implement add_particle </p>
<p class="interdd">Implement external_E_field </p>
<p class="interdd">Implement external_B_field </p>
<p class="interdd">Implement force_on_particle </p>
<p class="interdd">Implement total_force_external </p>
<p class="interdd">Implement total_force_particles </p>
<p class="interdd">Implement total_force </p>
<p class="interdd">Implement evolve_RK4 </p>
<p class="enddd">Implement evolve_forward_euler </p> <p class="enddd">Implement evolve_forward_euler </p>
</dd></dl> </dd></dl>

View File

@ -102,69 +102,159 @@ $(document).ready(function(){initNavTree('PenningTrap_8cpp_source.html',''); ini
</div><!--header--> </div><!--header-->
<div class="contents"> <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> <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="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="preprocessor">#include &quot;<a class="code" href="PenningTrap_8hpp.html">PenningTrap.hpp</a>&quot;</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="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="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="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="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>}</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> </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"><a class="line" href="classPenningTrap.html#a6e9776ff5b149f01080800716455d7c8"> 31</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="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="l00032" name="l00032"></a><span class="lineno"> 32</span> </div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</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="l00034" name="l00034"></a><span class="lineno"> 34</span>{</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</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"><a class="line" href="classPenningTrap.html#a978a2e2026a4b5308d5184712f81704b"> 36</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="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="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="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="l00039" name="l00039"></a><span class="lineno"> 39</span>{</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</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"><a class="line" href="classPenningTrap.html#a2a3e7f480ba52e9f24d4c50c3981a784"> 41</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="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>{</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> </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>}</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="l00045" name="l00045"></a><span class="lineno"> 45</span> </div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"><a class="line" href="classPenningTrap.html#a4790f41e4fbc6ede4991aa7bbda92182"> 46</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="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="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="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="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="l00050" name="l00050"></a><span class="lineno"> 50</span>{</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"><a class="line" href="classPenningTrap.html#a045adb85e97a8e0c38fb36d2fd74eeee"> 51</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="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>{</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> </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>}</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="l00055" name="l00055"></a><span class="lineno"> 55</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"><a class="line" href="classPenningTrap.html#a135db7d991d9b88b00fde4edee71f78d"> 56</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="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="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="l00058" name="l00058"></a><span class="lineno"> 58</span> </div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</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="l00060" name="l00060"></a><span class="lineno"> 60</span>{</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"><a class="line" href="classPenningTrap.html#a83cc7a04dae009ed8e75453c38fdf8be"> 61</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="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>{</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> </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="l00064" name="l00064"></a><span class="lineno"> 64</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> </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"><a class="line" href="classPenningTrap.html#ab891b839c40eeb38d8a2a636c70090a9"> 66</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="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="l00067" name="l00067"></a><span class="lineno"> 67</span> </div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</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>}</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="l00070" name="l00070"></a><span class="lineno"> 70</span> </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"><a class="line" href="classPenningTrap.html#a56544b6f4befb42984e9650cf2a40965"> 71</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="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="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="l00073" name="l00073"></a><span class="lineno"> 73</span> </div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</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="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="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="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="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="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="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="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="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="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"><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_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#l00051">PenningTrap.cpp:51</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="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#l00056">PenningTrap.cpp:56</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="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#l00041">PenningTrap.cpp:41</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="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#l00046">PenningTrap.cpp:46</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_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#l00071">PenningTrap.cpp:71</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_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#l00031">PenningTrap.cpp:31</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_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#l00061">PenningTrap.cpp:61</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#l00036">PenningTrap.cpp:36</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#l00066">PenningTrap.cpp:66</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="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>
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content --> </div><!-- doc-content -->
<!-- start footer part --> <!-- start footer part -->

View File

@ -137,25 +137,29 @@ $(document).ready(function(){initNavTree('PenningTrap_8hpp_source.html',''); ini
<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> <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="l00074" name="l00074"></a><span class="lineno"> 74</span> </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#a56544b6f4befb42984e9650cf2a40965">evolve_forward_euler</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="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="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><span class="preprocessor">#endif</span></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="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="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="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"><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_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#l00051">PenningTrap.cpp:51</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_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#l00056">PenningTrap.cpp:56</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#l00041">PenningTrap.cpp:41</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#l00046">PenningTrap.cpp:46</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#l00071">PenningTrap.cpp:71</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_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#l00031">PenningTrap.cpp:31</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_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#l00061">PenningTrap.cpp:61</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#l00036">PenningTrap.cpp:36</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#l00066">PenningTrap.cpp:66</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="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"><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_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> <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

@ -185,7 +185,7 @@ Friends</h2></td></tr>
<p>Initialize the particle. </p> <p>Initialize the particle. </p>
<p>Initialize the particle with a charge, mass, position and velocity. </p> <p>Initialize the particle with a charge, mass, position and velocity. </p>
<p class="definition">Definition at line <a class="el" href="Particle_8cpp_source.html#l00017">17</a> of file <a class="el" href="Particle_8cpp_source.html">Particle.cpp</a>.</p> <p class="definition">Definition at line <a class="el" href="Particle_8cpp_source.html#l00016">16</a> of file <a class="el" href="Particle_8cpp_source.html">Particle.cpp</a>.</p>
</div> </div>
</div> </div>

View File

@ -112,6 +112,8 @@ $(document).ready(function(){initNavTree('classPenningTrap.html',''); initResiza
<tr class="odd"><td class="entry"><a class="el" href="classPenningTrap.html#a2a3e7f480ba52e9f24d4c50c3981a784">external_B_field</a>(arma::vec r)</td><td class="entry"><a class="el" href="classPenningTrap.html">PenningTrap</a></td><td class="entry"></td></tr> <tr class="odd"><td class="entry"><a class="el" href="classPenningTrap.html#a2a3e7f480ba52e9f24d4c50c3981a784">external_B_field</a>(arma::vec r)</td><td class="entry"><a class="el" href="classPenningTrap.html">PenningTrap</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classPenningTrap.html#a978a2e2026a4b5308d5184712f81704b">external_E_field</a>(arma::vec r)</td><td class="entry"><a class="el" href="classPenningTrap.html">PenningTrap</a></td><td class="entry"></td></tr> <tr class="even"><td class="entry"><a class="el" href="classPenningTrap.html#a978a2e2026a4b5308d5184712f81704b">external_E_field</a>(arma::vec r)</td><td class="entry"><a class="el" href="classPenningTrap.html">PenningTrap</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classPenningTrap.html#a4790f41e4fbc6ede4991aa7bbda92182">force_on_particle</a>(int i, int j)</td><td class="entry"><a class="el" href="classPenningTrap.html">PenningTrap</a></td><td class="entry"></td></tr> <tr class="odd"><td class="entry"><a class="el" href="classPenningTrap.html#a4790f41e4fbc6ede4991aa7bbda92182">force_on_particle</a>(int i, int j)</td><td class="entry"><a class="el" href="classPenningTrap.html">PenningTrap</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>get_d</b>() (defined in <a class="el" href="classPenningTrap.html">PenningTrap</a>)</td><td class="entry"><a class="el" href="classPenningTrap.html">PenningTrap</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>get_particle</b>(int i) (defined in <a class="el" href="classPenningTrap.html">PenningTrap</a>)</td><td class="entry"><a class="el" href="classPenningTrap.html">PenningTrap</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">particles</a></td><td class="entry"><a class="el" href="classPenningTrap.html">PenningTrap</a></td><td class="entry"><span class="mlabel">private</span></td></tr> <tr class="even"><td class="entry"><a class="el" href="classPenningTrap.html#a0112525d9e79a472e761f8ef402a339f">particles</a></td><td class="entry"><a class="el" href="classPenningTrap.html">PenningTrap</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classPenningTrap.html#a81add5063bd5f29d77f0b5c299c6c560">PenningTrap</a>(double B_0=T, double V_0=25.*V/1000., double d=500.)</td><td class="entry"><a class="el" href="classPenningTrap.html">PenningTrap</a></td><td class="entry"></td></tr> <tr class="odd"><td class="entry"><a class="el" href="classPenningTrap.html#a81add5063bd5f29d77f0b5c299c6c560">PenningTrap</a>(double B_0=T, double V_0=25.*V/1000., double d=500.)</td><td class="entry"><a class="el" href="classPenningTrap.html">PenningTrap</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classPenningTrap.html#a83cc7a04dae009ed8e75453c38fdf8be">total_force</a>(int i)</td><td class="entry"><a class="el" href="classPenningTrap.html">PenningTrap</a></td><td class="entry"></td></tr> <tr class="even"><td class="entry"><a class="el" href="classPenningTrap.html#a83cc7a04dae009ed8e75453c38fdf8be">total_force</a>(int i)</td><td class="entry"><a class="el" href="classPenningTrap.html">PenningTrap</a></td><td class="entry"></td></tr>

View File

@ -143,6 +143,10 @@ Public Member Functions</h2></td></tr>
<tr class="memitem:a56544b6f4befb42984e9650cf2a40965"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPenningTrap.html#a56544b6f4befb42984e9650cf2a40965">evolve_forward_euler</a> (double dt)</td></tr> <tr class="memitem:a56544b6f4befb42984e9650cf2a40965"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPenningTrap.html#a56544b6f4befb42984e9650cf2a40965">evolve_forward_euler</a> (double dt)</td></tr>
<tr class="memdesc:a56544b6f4befb42984e9650cf2a40965"><td class="mdescLeft">&#160;</td><td class="mdescRight">Go forward one timestep using the forward Euler method. <br /></td></tr> <tr class="memdesc:a56544b6f4befb42984e9650cf2a40965"><td class="mdescLeft">&#160;</td><td class="mdescRight">Go forward one timestep using the forward Euler method. <br /></td></tr>
<tr class="separator:a56544b6f4befb42984e9650cf2a40965"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:a56544b6f4befb42984e9650cf2a40965"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a12b511e6903a0b033ba894c10b54d264"><td class="memItemLeft" align="right" valign="top">arma::vec&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPenningTrap.html#a12b511e6903a0b033ba894c10b54d264">get_particle</a> (int i)</td></tr>
<tr class="separator:a12b511e6903a0b033ba894c10b54d264"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a85b6a231a3208963b46811776da7e580"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPenningTrap.html#a85b6a231a3208963b46811776da7e580">get_d</a> ()</td></tr>
<tr class="separator:a85b6a231a3208963b46811776da7e580"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls"> </table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-attribs" name="pri-attribs"></a> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-attribs" name="pri-attribs"></a>
Private Attributes</h2></td></tr> Private Attributes</h2></td></tr>
@ -222,7 +226,7 @@ Private Attributes</h2></td></tr>
<p>Add a particle to the system. </p> <p>Add a particle to the system. </p>
<p class="definition">Definition at line <a class="el" href="PenningTrap_8cpp_source.html#l00031">31</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#l00033">33</a> of file <a class="el" href="PenningTrap_8cpp_source.html">PenningTrap.cpp</a>.</p>
</div> </div>
</div> </div>
@ -244,7 +248,7 @@ Private Attributes</h2></td></tr>
<p>Go forward one timestep using the forward Euler method. </p> <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#l00071">71</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#l00121">121</a> of file <a class="el" href="PenningTrap_8cpp_source.html">PenningTrap.cpp</a>.</p>
</div> </div>
</div> </div>
@ -266,7 +270,7 @@ Private Attributes</h2></td></tr>
<p>Go forward one timestep using the RK4 method. </p> <p>Go forward one timestep using the RK4 method. </p>
<p class="definition">Definition at line <a class="el" href="PenningTrap_8cpp_source.html#l00066">66</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#l00116">116</a> of file <a class="el" href="PenningTrap_8cpp_source.html">PenningTrap.cpp</a>.</p>
</div> </div>
</div> </div>
@ -288,7 +292,7 @@ Private Attributes</h2></td></tr>
<p>Calculate B at point r. </p> <p>Calculate B at point r. </p>
<p class="definition">Definition at line <a class="el" href="PenningTrap_8cpp_source.html#l00041">41</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#l00049">49</a> of file <a class="el" href="PenningTrap_8cpp_source.html">PenningTrap.cpp</a>.</p>
</div> </div>
</div> </div>
@ -310,7 +314,7 @@ Private Attributes</h2></td></tr>
<p>Calculate E at point r. </p> <p>Calculate E at point r. </p>
<p class="definition">Definition at line <a class="el" href="PenningTrap_8cpp_source.html#l00036">36</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#l00038">38</a> of file <a class="el" href="PenningTrap_8cpp_source.html">PenningTrap.cpp</a>.</p>
</div> </div>
</div> </div>
@ -343,7 +347,46 @@ Private Attributes</h2></td></tr>
<p>Calculate the force between 2 particles. </p> <p>Calculate the force between 2 particles. </p>
<p>Calculate the force exhibited on particle p_i from particle p_j. </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#l00046">46</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#l00059">59</a> of file <a class="el" href="PenningTrap_8cpp_source.html">PenningTrap.cpp</a>.</p>
</div>
</div>
<a id="a85b6a231a3208963b46811776da7e580" name="a85b6a231a3208963b46811776da7e580"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a85b6a231a3208963b46811776da7e580">&#9670;&#160;</a></span>get_d()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">double PenningTrap::get_d </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="PenningTrap_8cpp_source.html#l00142">142</a> of file <a class="el" href="PenningTrap_8cpp_source.html">PenningTrap.cpp</a>.</p>
</div>
</div>
<a id="a12b511e6903a0b033ba894c10b54d264" name="a12b511e6903a0b033ba894c10b54d264"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a12b511e6903a0b033ba894c10b54d264">&#9670;&#160;</a></span>get_particle()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">arma::vec PenningTrap::get_particle </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>i</em></td><td>)</td>
<td></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>
</div> </div>
</div> </div>
@ -365,7 +408,7 @@ Private Attributes</h2></td></tr>
<p>calculate the total force on a particle. </p> <p>calculate the total force on a particle. </p>
<p class="definition">Definition at line <a class="el" href="PenningTrap_8cpp_source.html#l00061">61</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#l00111">111</a> of file <a class="el" href="PenningTrap_8cpp_source.html">PenningTrap.cpp</a>.</p>
</div> </div>
</div> </div>
@ -388,7 +431,7 @@ Private Attributes</h2></td></tr>
<p>Calculate the total external force on a particle. </p> <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>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#l00051">51</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#l00074">74</a> of file <a class="el" href="PenningTrap_8cpp_source.html">PenningTrap.cpp</a>.</p>
</div> </div>
</div> </div>
@ -410,7 +453,7 @@ Private Attributes</h2></td></tr>
<p>Calculate the total force on a particle from other particles. </p> <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#l00056">56</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#l00092">92</a> of file <a class="el" href="PenningTrap_8cpp_source.html">PenningTrap.cpp</a>.</p>
</div> </div>
</div> </div>

View File

@ -113,6 +113,8 @@ 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="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="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="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="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="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> <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>

View File

@ -3,6 +3,7 @@ var dir_68267d1309a1af8e8297ef4c3efbcdba =
[ "main.cpp", "main_8cpp.html", null ], [ "main.cpp", "main_8cpp.html", null ],
[ "Particle.cpp", "Particle_8cpp.html", null ], [ "Particle.cpp", "Particle_8cpp.html", null ],
[ "PenningTrap.cpp", "PenningTrap_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", null ],
[ "utils.cpp", "utils_8cpp.html", "utils_8cpp" ] [ "utils.cpp", "utils_8cpp.html", "utils_8cpp" ]
]; ];

View File

@ -112,8 +112,9 @@ $(document).ready(function(){initNavTree('files.html',''); initResizable(); });
<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_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_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_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__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_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_4_" class="even"><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> <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> </table>
</div><!-- directory --> </div><!-- directory -->
</div><!-- contents --> </div><!-- contents -->

View File

@ -99,6 +99,7 @@ $(document).ready(function(){initNavTree('main_8cpp.html',''); initResizable();
<div class="header"> <div class="header">
<div class="summary"> <div class="summary">
<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a> </div> <a href="#func-members">Functions</a> </div>
<div class="headertitle"><div class="title">main.cpp File Reference</div></div> <div class="headertitle"><div class="title">main.cpp File Reference</div></div>
</div><!--header--> </div><!--header-->
@ -106,11 +107,30 @@ $(document).ready(function(){initNavTree('main_8cpp.html',''); initResizable();
<p>The main program for this project. <p>The main program for this project.
<a href="#details">More...</a></p> <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 />
<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 />
</div>
<p><a href="main_8cpp_source.html">Go to the source code of this file.</a></p> <p><a href="main_8cpp_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls"> <table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a7b24a37e8ce9d243351bfc9b24945e63"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8cpp.html#a7b24a37e8ce9d243351bfc9b24945e63">PARTICLES</a>&#160;&#160;&#160;100</td></tr>
<tr class="separator:a7b24a37e8ce9d243351bfc9b24945e63"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0240ac851181b84ac374872dc5434ee4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8cpp.html#a0240ac851181b84ac374872dc5434ee4">N</a>&#160;&#160;&#160;10000</td></tr>
<tr class="separator:a0240ac851181b84ac374872dc5434ee4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a16cdf08eafbd529171c64d69a0ec02b3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8cpp.html#a16cdf08eafbd529171c64d69a0ec02b3">CHARGE</a>&#160;&#160;&#160;1.</td></tr>
<tr class="separator:a16cdf08eafbd529171c64d69a0ec02b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad96793de0cc60529a6b01040c0cd8033"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8cpp.html#ad96793de0cc60529a6b01040c0cd8033">MASS</a>&#160;&#160;&#160;40.</td></tr>
<tr class="separator:ad96793de0cc60529a6b01040c0cd8033"><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> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr> 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: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="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> <tr class="separator:ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table> </table>
@ -123,7 +143,91 @@ Janita Ovidie Sandtrøen Willumsen (janitaws)</dd></dl>
<dl class="bug"><dt><b><a class="el" href="bug.html#_bug000005">Bug:</a></b></dt><dd>No known bugs </dd></dl> <dl class="bug"><dt><b><a class="el" href="bug.html#_bug000005">Bug:</a></b></dt><dd>No known bugs </dd></dl>
<p class="definition">Definition in file <a class="el" href="main_8cpp_source.html">main.cpp</a>.</p> <p class="definition">Definition in file <a class="el" href="main_8cpp_source.html">main.cpp</a>.</p>
</div><h2 class="groupheader">Function Documentation</h2> </div><h2 class="groupheader">Macro Definition Documentation</h2>
<a id="a16cdf08eafbd529171c64d69a0ec02b3" name="a16cdf08eafbd529171c64d69a0ec02b3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a16cdf08eafbd529171c64d69a0ec02b3">&#9670;&#160;</a></span>CHARGE</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CHARGE&#160;&#160;&#160;1.</td>
</tr>
</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>
</div>
</div>
<a id="ad96793de0cc60529a6b01040c0cd8033" name="ad96793de0cc60529a6b01040c0cd8033"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad96793de0cc60529a6b01040c0cd8033">&#9670;&#160;</a></span>MASS</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MASS&#160;&#160;&#160;40.</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>
<a id="a0240ac851181b84ac374872dc5434ee4" name="a0240ac851181b84ac374872dc5434ee4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0240ac851181b84ac374872dc5434ee4">&#9670;&#160;</a></span>N</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define N&#160;&#160;&#160;10000</td>
</tr>
</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>
</div>
</div>
<a id="a7b24a37e8ce9d243351bfc9b24945e63" name="a7b24a37e8ce9d243351bfc9b24945e63"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7b24a37e8ce9d243351bfc9b24945e63">&#9670;&#160;</a></span>PARTICLES</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define PARTICLES&#160;&#160;&#160;100</td>
</tr>
</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>
</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> <a id="ae66f6b31b5ad750f1fe042a706a4e3d4" name="ae66f6b31b5ad750f1fe042a706a4e3d4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae66f6b31b5ad750f1fe042a706a4e3d4">&#9670;&#160;</a></span>main()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ae66f6b31b5ad750f1fe042a706a4e3d4">&#9670;&#160;</a></span>main()</h2>
@ -139,7 +243,7 @@ Janita Ovidie Sandtrøen Willumsen (janitaws)</dd></dl>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="main_8cpp_source.html#l00013">13</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#l00077">77</a> of file <a class="el" href="main_8cpp_source.html">main.cpp</a>.</p>
</div> </div>
</div> </div>

View File

@ -102,10 +102,87 @@ $(document).ready(function(){initNavTree('main_8cpp_source.html',''); initResiza
</div><!--header--> </div><!--header-->
<div class="contents"> <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> <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="keywordtype">int</span> main() </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>{</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="keywordflow">return</span> 0;</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>}</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="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="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="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="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="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="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="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>
<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> </div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span><span class="keywordtype">int</span> main()</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> <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="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>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> std::cout &lt;&lt; <span class="stringliteral">&quot;Time: &quot;</span> &lt;&lt; end - start &lt;&lt; <span class="stringliteral">&quot; seconds&quot;</span> &lt;&lt; std::endl;</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="keywordflow">return</span> 0;</div>
<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><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content --> </div><!-- doc-content -->
<!-- start footer part --> <!-- start footer part -->

View File

@ -53,13 +53,14 @@ var NAVTREEINDEX0 =
"main_8cpp.html":[4,0,1,0], "main_8cpp.html":[4,0,1,0],
"main_8cpp_source.html":[4,0,1,0], "main_8cpp_source.html":[4,0,1,0],
"pages.html":[], "pages.html":[],
"test__suite_8cpp.html":[4,0,1,3], "test_8py_source.html":[4,0,1,3],
"test__suite_8cpp_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], "todo.html":[2],
"utils_8cpp.html":[4,0,1,4], "utils_8cpp.html":[4,0,1,5],
"utils_8cpp.html#a58565270b643b24e3132f38c653e0199":[4,0,1,4,0], "utils_8cpp.html#a58565270b643b24e3132f38c653e0199":[4,0,1,5,0],
"utils_8cpp.html#acd2a9c7a7d5a7fe9163be8c4cc110746":[4,0,1,4,1], "utils_8cpp.html#acd2a9c7a7d5a7fe9163be8c4cc110746":[4,0,1,5,1],
"utils_8cpp_source.html":[4,0,1,4], "utils_8cpp_source.html":[4,0,1,5],
"utils_8hpp.html":[4,0,0,3], "utils_8hpp.html":[4,0,0,3],
"utils_8hpp.html#ad54b96a1074f9df4dc892a41d115b72d":[4,0,0,3,1], "utils_8hpp.html#ad54b96a1074f9df4dc892a41d115b72d":[4,0,0,3,1],
"utils_8hpp.html#adfb618b2fdff47ef30a4a2b62c04f384":[4,0,0,3,2], "utils_8hpp.html#adfb618b2fdff47ef30a4a2b62c04f384":[4,0,0,3,2],

177
docs/test_8py_source.html Normal file
View File

@ -0,0 +1,177 @@
<!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/test.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('test_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">test.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) <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(<span class="keyword">lambda</span> x: float(x), 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> fig = plt.figure()</div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> ax = fig.add_subplot(projection=<span class="stringliteral">&quot;3d&quot;</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"> 33</span> </div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> arr = get_data([f<span class="stringliteral">&quot;output/p{i}.txt&quot;</span> <span class="keywordflow">for</span> i <span class="keywordflow">in</span> range(100)])</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> arr = arr[:,:,::10]</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> N = len(arr[0][0])</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> 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="l00041" name="l00041"></a><span class="lineno"> 41</span> </div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> ax.set_xlim3d([-500.0, 500.0])</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> ax.set_xlabel(<span class="stringliteral">&#39;X&#39;</span>)</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> ax.set_ylim3d([-500.0, 500.0])</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> ax.set_ylabel(<span class="stringliteral">&#39;Y&#39;</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> ax.set_zlim3d([-500.0, 500.0])</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> ax.set_zlabel(<span class="stringliteral">&#39;Z&#39;</span>) </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> ani = animation.FuncAnimation(fig, update, N, fargs=(lines, arr), </div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> interval=1,</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> blit=<span class="keyword">False</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> </div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> <span class="comment"># ani.save(&quot;100_particles.gif&quot;, writer=animation.FFMpegFileWriter(fps=30))</span></div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> plt.show()</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> </div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span><span class="keywordflow">if</span> __name__ == <span class="stringliteral">&quot;__main__&quot;</span>:</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> animate()</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> </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>test.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

@ -102,26 +102,8 @@ $(document).ready(function(){initNavTree('todo.html',''); initResizable(); });
</div><!--header--> </div><!--header-->
<div class="contents"> <div class="contents">
<div class="textblock"><dl class="reflist"> <div class="textblock"><dl class="reflist">
<dt>File <a class="el" href="Particle_8cpp.html">Particle.cpp</a> </dt>
<dd><a class="anchor" id="_todo000001"></a>Implement constructor </dd>
<dt>File <a class="el" href="PenningTrap_8cpp.html">PenningTrap.cpp</a> </dt> <dt>File <a class="el" href="PenningTrap_8cpp.html">PenningTrap.cpp</a> </dt>
<dd><p class="startdd"><a class="anchor" id="_todo000002"></a>Implement constructor </p> <dd><p class="startdd"><a class="anchor" id="_todo000001"></a>Implement evolve_RK4 </p>
<p class="interdd"></p>
<p class="interdd">Implement add_particle </p>
<p class="interdd"></p>
<p class="interdd">Implement external_E_field </p>
<p class="interdd"></p>
<p class="interdd">Implement external_B_field </p>
<p class="interdd"></p>
<p class="interdd">Implement force_on_particle </p>
<p class="interdd"></p>
<p class="interdd">Implement total_force_external </p>
<p class="interdd"></p>
<p class="interdd">Implement total_force_particles </p>
<p class="interdd"></p>
<p class="interdd">Implement total_force </p>
<p class="interdd"></p>
<p class="interdd">Implement evolve_RK4 </p>
<p class="interdd"></p> <p class="interdd"></p>
<p class="enddd">Implement evolve_forward_euler </p> <p class="enddd">Implement evolve_forward_euler </p>
</dd> </dd>

View File

@ -75,6 +75,10 @@ public:
/** @brief Go forward one timestep using the forward Euler method /** @brief Go forward one timestep using the forward Euler method
* */ * */
void evolve_forward_euler(double dt); void evolve_forward_euler(double dt);
arma::vec get_particle(int i);
double get_d();
}; };
#endif #endif

View File

@ -1,4 +1,4 @@
.TH "Particle" 3 "Thu Sep 28 2023" "Penning Trap Simulation" \" -*- nroff -*- .TH "Particle" 3 "Mon Oct 2 2023" "Penning Trap Simulation" \" -*- nroff -*-
.ad l .ad l
.nh .nh
.SH NAME .SH NAME
@ -57,7 +57,7 @@ Definition at line \fB19\fP of file \fBParticle\&.hpp\fP\&.
.PP .PP
Initialize the particle\&. Initialize the particle with a charge, mass, position and velocity\&. Initialize the particle\&. Initialize the particle with a charge, mass, position and velocity\&.
.PP .PP
Definition at line \fB17\fP of file \fBParticle\&.cpp\fP\&. Definition at line \fB16\fP of file \fBParticle\&.cpp\fP\&.
.SH "Friends And Related Function Documentation" .SH "Friends And Related Function Documentation"
.PP .PP
.SS "friend class \fBPenningTrap\fP\fC [friend]\fP" .SS "friend class \fBPenningTrap\fP\fC [friend]\fP"

View File

@ -1,4 +1,4 @@
.TH "src/Particle.cpp" 3 "Thu Sep 28 2023" "Penning Trap Simulation" \" -*- nroff -*- .TH "src/Particle.cpp" 3 "Mon Oct 2 2023" "Penning Trap Simulation" \" -*- nroff -*-
.ad l .ad l
.nh .nh
.SH NAME .SH NAME
@ -34,12 +34,6 @@ Janita Ovidie Sandtrøen Willumsen (janitaws)
No known bugs No known bugs
.RE .RE
.PP .PP
.PP
\fBTodo\fP
.RS 4
Implement constructor
.RE
.PP
.PP .PP
Definition in file \fBParticle\&.cpp\fP\&. Definition in file \fBParticle\&.cpp\fP\&.

View File

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

View File

@ -1,4 +1,4 @@
.TH "PenningTrap" 3 "Thu Sep 28 2023" "Penning Trap Simulation" \" -*- nroff -*- .TH "PenningTrap" 3 "Mon Oct 2 2023" "Penning Trap Simulation" \" -*- nroff -*-
.ad l .ad l
.nh .nh
.SH NAME .SH NAME
@ -52,6 +52,12 @@ PenningTrap \- A class that simulates a Penning trap\&.
.RI "void \fBevolve_forward_euler\fP (double dt)" .RI "void \fBevolve_forward_euler\fP (double dt)"
.br .br
.RI "Go forward one timestep using the forward Euler method\&. " .RI "Go forward one timestep using the forward Euler method\&. "
.ti -1c
.RI "arma::vec \fBget_particle\fP (int i)"
.br
.ti -1c
.RI "double \fBget_d\fP ()"
.br
.in -1c .in -1c
.SS "Private Attributes" .SS "Private Attributes"
@ -95,55 +101,63 @@ Definition at line \fB26\fP of file \fBPenningTrap\&.cpp\fP\&.
.PP .PP
Add a particle to the system\&. Add a particle to the system\&.
.PP .PP
Definition at line \fB31\fP of file \fBPenningTrap\&.cpp\fP\&. Definition at line \fB33\fP of file \fBPenningTrap\&.cpp\fP\&.
.SS "void PenningTrap::evolve_forward_euler (double dt)" .SS "void PenningTrap::evolve_forward_euler (double dt)"
.PP .PP
Go forward one timestep using the forward Euler method\&. Go forward one timestep using the forward Euler method\&.
.PP .PP
Definition at line \fB71\fP of file \fBPenningTrap\&.cpp\fP\&. Definition at line \fB121\fP of file \fBPenningTrap\&.cpp\fP\&.
.SS "void PenningTrap::evolve_RK4 (double dt)" .SS "void PenningTrap::evolve_RK4 (double dt)"
.PP .PP
Go forward one timestep using the RK4 method\&. Go forward one timestep using the RK4 method\&.
.PP .PP
Definition at line \fB66\fP of file \fBPenningTrap\&.cpp\fP\&. Definition at line \fB116\fP of file \fBPenningTrap\&.cpp\fP\&.
.SS "arma::vec PenningTrap::external_B_field (arma::vec r)" .SS "arma::vec PenningTrap::external_B_field (arma::vec r)"
.PP .PP
Calculate B at point r\&. Calculate B at point r\&.
.PP .PP
Definition at line \fB41\fP of file \fBPenningTrap\&.cpp\fP\&. Definition at line \fB49\fP of file \fBPenningTrap\&.cpp\fP\&.
.SS "arma::vec PenningTrap::external_E_field (arma::vec r)" .SS "arma::vec PenningTrap::external_E_field (arma::vec r)"
.PP .PP
Calculate E at point r\&. Calculate E at point r\&.
.PP .PP
Definition at line \fB36\fP of file \fBPenningTrap\&.cpp\fP\&. Definition at line \fB38\fP of file \fBPenningTrap\&.cpp\fP\&.
.SS "arma::vec PenningTrap::force_on_particle (int i, int j)" .SS "arma::vec PenningTrap::force_on_particle (int i, int j)"
.PP .PP
Calculate the force between 2 particles\&. Calculate the force exhibited on particle p_i from particle p_j\&. Calculate the force between 2 particles\&. Calculate the force exhibited on particle p_i from particle p_j\&.
.PP .PP
Definition at line \fB46\fP of file \fBPenningTrap\&.cpp\fP\&. Definition at line \fB59\fP of file \fBPenningTrap\&.cpp\fP\&.
.SS "double PenningTrap::get_d ()"
.PP
Definition at line \fB142\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\&.
.SS "arma::vec PenningTrap::total_force (int i)" .SS "arma::vec PenningTrap::total_force (int i)"
.PP .PP
calculate the total force on a particle\&. calculate the total force on a particle\&.
.PP .PP
Definition at line \fB61\fP of file \fBPenningTrap\&.cpp\fP\&. Definition at line \fB111\fP of file \fBPenningTrap\&.cpp\fP\&.
.SS "arma::vec PenningTrap::total_force_external (int i)" .SS "arma::vec PenningTrap::total_force_external (int i)"
.PP .PP
Calculate the total external force on a particle\&. Calculate the total amount of force that E and B exhibits on particle p_i\&. Calculate the total external force on a particle\&. Calculate the total amount of force that E and B exhibits on particle p_i\&.
.PP .PP
Definition at line \fB51\fP of file \fBPenningTrap\&.cpp\fP\&. Definition at line \fB74\fP of file \fBPenningTrap\&.cpp\fP\&.
.SS "arma::vec PenningTrap::total_force_particles (int i)" .SS "arma::vec PenningTrap::total_force_particles (int i)"
.PP .PP
Calculate the total force on a particle from other particles\&. Calculate the total force on a particle from other particles\&.
.PP .PP
Definition at line \fB56\fP of file \fBPenningTrap\&.cpp\fP\&. Definition at line \fB92\fP of file \fBPenningTrap\&.cpp\fP\&.
.SH "Member Data Documentation" .SH "Member Data Documentation"
.PP .PP
.SS "double PenningTrap::B_0\fC [private]\fP" .SS "double PenningTrap::B_0\fC [private]\fP"

View File

@ -1,4 +1,4 @@
.TH "src/PenningTrap.cpp" 3 "Thu Sep 28 2023" "Penning Trap Simulation" \" -*- nroff -*- .TH "src/PenningTrap.cpp" 3 "Mon Oct 2 2023" "Penning Trap Simulation" \" -*- nroff -*-
.ad l .ad l
.nh .nh
.SH NAME .SH NAME
@ -7,8 +7,18 @@ src/PenningTrap.cpp \- The implementation of the \fBPenningTrap\fP class\&.
.SH SYNOPSIS .SH SYNOPSIS
.br .br
.PP .PP
\fC#include 'utils\&.hpp'\fP
.br
\fC#include 'PenningTrap\&.hpp'\fP \fC#include 'PenningTrap\&.hpp'\fP
.br .br
\fC#include 'constants\&.hpp'\fP
.br
\fC#include <algorithm>\fP
.br
\fC#include <stdexcept>\fP
.br
\fC#include <omp\&.h>\fP
.br
.SH "Detailed Description" .SH "Detailed Description"
.PP .PP
@ -37,22 +47,6 @@ No known bugs
.PP .PP
\fBTodo\fP \fBTodo\fP
.RS 4 .RS 4
Implement constructor
.PP
Implement add_particle
.PP
Implement external_E_field
.PP
Implement external_B_field
.PP
Implement force_on_particle
.PP
Implement total_force_external
.PP
Implement total_force_particles
.PP
Implement total_force
.PP
Implement evolve_RK4 Implement evolve_RK4
.PP .PP
Implement evolve_forward_euler Implement evolve_forward_euler

View File

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

View File

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

View File

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

View File

@ -1,4 +1,4 @@
.TH "src/main.cpp" 3 "Thu Sep 28 2023" "Penning Trap Simulation" \" -*- nroff -*- .TH "src/main.cpp" 3 "Mon Oct 2 2023" "Penning Trap Simulation" \" -*- nroff -*-
.ad l .ad l
.nh .nh
.SH NAME .SH NAME
@ -7,10 +7,42 @@ src/main.cpp \- The main program for this project\&.
.SH SYNOPSIS .SH SYNOPSIS
.br .br
.PP .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
.br
\fC#include 'PenningTrap\&.hpp'\fP
.br
.SS "Macros"
.in +1c
.ti -1c
.RI "#define \fBPARTICLES\fP 100"
.br
.ti -1c
.RI "#define \fBN\fP 10000"
.br
.ti -1c
.RI "#define \fBCHARGE\fP 1\&."
.br
.ti -1c
.RI "#define \fBMASS\fP 40\&."
.br
.in -1c
.SS "Functions" .SS "Functions"
.in +1c .in +1c
.ti -1c .ti -1c
.RI "void \fBeuler_100_particles\fP ()"
.br
.ti -1c
.RI "int \fBmain\fP ()" .RI "int \fBmain\fP ()"
.br .br
.in -1c .in -1c
@ -41,12 +73,34 @@ No known bugs
.PP .PP
Definition in file \fBmain\&.cpp\fP\&. Definition in file \fBmain\&.cpp\fP\&.
.SH "Macro Definition Documentation"
.PP
.SS "#define CHARGE 1\&."
.PP
Definition at line \fB23\fP of file \fBmain\&.cpp\fP\&.
.SS "#define MASS 40\&."
.PP
Definition at line \fB24\fP of file \fBmain\&.cpp\fP\&.
.SS "#define N 10000"
.PP
Definition at line \fB22\fP of file \fBmain\&.cpp\fP\&.
.SS "#define PARTICLES 100"
.PP
Definition at line \fB21\fP of file \fBmain\&.cpp\fP\&.
.SH "Function Documentation" .SH "Function Documentation"
.PP .PP
.SS "void euler_100_particles ()"
.PP
Definition at line \fB26\fP of file \fBmain\&.cpp\fP\&.
.SS "int main ()" .SS "int main ()"
.PP .PP
Definition at line \fB13\fP of file \fBmain\&.cpp\fP\&. Definition at line \fB77\fP of file \fBmain\&.cpp\fP\&.
.SH "Author" .SH "Author"
.PP .PP
Generated automatically by Doxygen for Penning Trap Simulation from the source code\&. Generated automatically by Doxygen for Penning Trap Simulation from the source code\&.

View File

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

View File

@ -1,37 +1,11 @@
.TH "todo" 3 "Thu Sep 28 2023" "Penning Trap Simulation" \" -*- nroff -*- .TH "todo" 3 "Mon Oct 2 2023" "Penning Trap Simulation" \" -*- nroff -*-
.ad l .ad l
.nh .nh
.SH NAME .SH NAME
todo \- Todo List todo \- Todo List
.PP .PP
.IP "\fBFile \fBParticle\&.cpp\fP \fP" 1c
Implement constructor
.IP "\fBFile \fBPenningTrap\&.cpp\fP \fP" 1c .IP "\fBFile \fBPenningTrap\&.cpp\fP \fP" 1c
Implement constructor
.PP
.PP
Implement add_particle
.PP
.PP
Implement external_E_field
.PP
.PP
Implement external_B_field
.PP
.PP
Implement force_on_particle
.PP
.PP
Implement total_force_external
.PP
.PP
Implement total_force_particles
.PP
.PP
Implement total_force
.PP
.PP
Implement evolve_RK4 Implement evolve_RK4
.PP .PP
.PP .PP

View File

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

View File

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

View File

@ -8,7 +8,7 @@ CLASSOBJS=$(CLASSSRCS:.cpp=.o)
INCLUDE=../include INCLUDE=../include
CFLAGS=-larmadillo -llapack -std=c++11 CFLAGS=-larmadillo -llapack -std=c++11 -O2
OPENMP=-fopenmp OPENMP=-fopenmp
# Add a debug flag when compiling (For the DEBUG macro in utils.hpp) # Add a debug flag when compiling (For the DEBUG macro in utils.hpp)
@ -24,7 +24,7 @@ endif
all: test_suite main all: test_suite main
# Rules for executables # Rules for executables
main: main.o $(LIBOBJS) main: main.o $(LIBOBJS) $(CLASSOBJS)
$(CC) $^ -o $@ $(CFLAGS) $(DBGFLAG) -I$(INCLUDE) $(OPENMP) $(CC) $^ -o $@ $(CFLAGS) $(DBGFLAG) -I$(INCLUDE) $(OPENMP)
test_suite: test_suite.o $(LIBOBJS) test_suite: test_suite.o $(LIBOBJS)
@ -32,7 +32,7 @@ test_suite: test_suite.o $(LIBOBJS)
# Rule for object files # Rule for object files
%.o: %.cpp %.o: %.cpp
$(CC) -c $^ -o $@ $(DBGFLAG) -I$(INCLUDE) $(OPENMP) $(CC) -c $^ -o $@ $(CFLAGS) $(DBGFLAG) -I$(INCLUDE) $(OPENMP)
clean: clean:
rm *.o rm *.o

View File

@ -9,7 +9,6 @@
* *
* @bug No known bugs * @bug No known bugs
* *
* @todo Implement constructor
* */ * */
#include "Particle.hpp" #include "Particle.hpp"
@ -18,5 +17,9 @@ Particle::Particle(double q, double m,
arma::vec::fixed<3> r_vec, arma::vec::fixed<3> r_vec,
arma::vec::fixed<3> v_vec) arma::vec::fixed<3> v_vec)
{ {
// Giving the particle its properties
this->q = q;
this->m = m;
this->r_vec = r_vec;
this->v_vec = v_vec;
} }

View File

@ -9,58 +9,108 @@
* *
* @bug No known bugs * @bug No known bugs
* *
* @todo Implement constructor
* @todo Implement add_particle
* @todo Implement external_E_field
* @todo Implement external_B_field
* @todo Implement force_on_particle
* @todo Implement total_force_external
* @todo Implement total_force_particles
* @todo Implement total_force
* @todo Implement evolve_RK4 * @todo Implement evolve_RK4
* @todo Implement evolve_forward_euler * @todo Implement evolve_forward_euler
* */ * */
#include "utils.hpp"
#include "PenningTrap.hpp" #include "PenningTrap.hpp"
#include "constants.hpp"
#include <algorithm>
#include <stdexcept>
#include <omp.h>
#pragma omp declare reduction( + : arma::vec : omp_out += omp_in ) \
initializer( omp_priv = omp_orig )
PenningTrap::PenningTrap(double B_0, double V_0, double d) PenningTrap::PenningTrap(double B_0, double V_0, double d)
{ {
this->B_0 = B_0;
this->V_0 = V_0;
this->d = d;
} }
void PenningTrap::add_particle(Particle particle) void PenningTrap::add_particle(Particle particle)
{ {
this->particles.push_back(particle);
} }
arma::vec PenningTrap::external_E_field(arma::vec r) arma::vec PenningTrap::external_E_field(arma::vec r)
{ {
arma::vec::fixed<3> res;
double f = this->V_0/(this->d*this->d);
res(0) = r(0);
res(1) = r(1);
res(2) = -2.*r(2);
return f*res;
} }
arma::vec PenningTrap::external_B_field(arma::vec r) arma::vec PenningTrap::external_B_field(arma::vec r)
{ {
arma::vec::fixed<3> res;
res(0) = 0.;
res(1) = 0.;
res(2) = this->B_0;
return res;
} }
arma::vec PenningTrap::force_on_particle(int i, int j) arma::vec PenningTrap::force_on_particle(int i, int j)
{ {
// Calculate the difference between the particles' position
arma::vec::fixed<3> res = this->particles.at(i).r_vec
- this->particles.at(j).r_vec;
// Get the distance between the particles
double norm = arma::norm(res);
// Multiply res with p_j's charge divided by the norm cubed
res *= this->particles.at(j).q/(norm*norm*norm);
return res;
} }
arma::vec PenningTrap::total_force_external(int i) arma::vec PenningTrap::total_force_external(int i)
{ {
Particle p = this->particles.at(i);
arma::vec::fixed<3> v_cross_B;
arma::vec::fixed<3> B = this->external_B_field(p.r_vec);
v_cross_B(0) = p.v_vec(1)*B(2) - p.v_vec(2)*B(1);
v_cross_B(1) = p.v_vec(2)*B(0) - p.v_vec(0)*B(2);
v_cross_B(2) = p.v_vec(0)*B(1) - p.v_vec(1)*B(0);
arma::vec force = p.q
*(this->external_E_field(p.r_vec) + v_cross_B);
return force;
} }
arma::vec PenningTrap::total_force_particles(int i) arma::vec PenningTrap::total_force_particles(int i)
{ {
Particle p = this->particles.at(i);
arma::vec res(3);
for (int j=0; j < this->particles.size(); j++) {
if (i == j) {
continue;
}
res += this->force_on_particle(i, j);
}
res *= K_E*(p.q/p.m);
return res;
} }
arma::vec PenningTrap::total_force(int i) arma::vec PenningTrap::total_force(int i)
{ {
return this->total_force_external(i) - this->total_force_particles(i);
} }
void PenningTrap::evolve_RK4(double dt) void PenningTrap::evolve_RK4(double dt)
@ -70,5 +120,26 @@ void PenningTrap::evolve_RK4(double dt)
void PenningTrap::evolve_forward_euler(double dt) void PenningTrap::evolve_forward_euler(double dt)
{ {
std::vector<Particle> new_state = this->particles;
Particle *p;
#pragma omp parallel for private(p)
for (int i=0; i < this->particles.size(); i++) {
p = &new_state.at(i);
p->v_vec += dt*this->total_force(i)/new_state.at(i).m;
p->r_vec += dt*this->particles.at(i).v_vec;
}
this->particles = new_state;
}
arma::vec PenningTrap::get_particle(int i)
{
return this->particles.at(i).r_vec;
}
double PenningTrap::get_d()
{
return this->d;
} }

View File

@ -10,7 +10,79 @@
* @bug No known bugs * @bug No known bugs
* */ * */
int main() #include <filesystem>
#include <fstream>
#include <string>
#include <omp.h>
#include <sys/stat.h>
#include "PenningTrap.hpp"
#define PARTICLES 100
#define N 10000
#define CHARGE 1.
#define MASS 40. // unit: amu
void euler_100_particles()
{ {
PenningTrap trap;
// Add particles inside trap
for (int i=0; i < PARTICLES; i++) {
arma::vec r = arma::vec(3).randn() * 0.1 * trap.get_d(); // random initial position
arma::vec v = arma::vec(3).randn() * 0.1 * trap.get_d(); // random initial velocity
trap.add_particle(Particle(CHARGE, MASS, r, v));
}
double time = 50.; // microseconds
double dt = time / (double) N;
auto res = new arma::vec::fixed<3>[PARTICLES][N];
int counter = 0;
// Get the path of all particles
for (int j=0; j < N; j++) {
#pragma omp parallel for
for (int i=0; i < PARTICLES; i++) {
res[i][j] = trap.get_particle(i);
}
trap.evolve_forward_euler(dt);
}
std::cout << counter << std::endl;
arma::vec::fixed<3>* cur_row;
arma::vec::fixed<3> cur_elem;
mkdir("output", 0777);
std::ofstream ofile;
// Write particle paths to file
#pragma omp parallel for private(cur_row, cur_elem, ofile)
for (int i=0; i < PARTICLES; i++) {
cur_row = res[i];
ofile.open("output/p" + std::to_string(i) + ".txt");
for (int j=0; j < N; j++) {
cur_elem = cur_row[j];
ofile << cur_elem(0) << ","
<< cur_elem(1) << ","
<< cur_elem(2) << "\n";
}
ofile.close();
}
}
int main()
{
double start = omp_get_wtime();
euler_100_particles();
double end = omp_get_wtime();
std::cout << "Time: " << end - start << " seconds" << std::endl;
return 0; return 0;
} }

63
src/test.py Normal file
View File

@ -0,0 +1,63 @@
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import animation
def get_data(files):
res = []
for file in files:
arr = [[], [], []]
with open(file) as f:
lines = f.readlines()
for line in lines:
xi,yi,zi = map(lambda x: float(x), line.strip().split(","))
arr[0].append(xi)
arr[1].append(yi)
arr[2].append(zi)
res.append(arr)
return np.array(res)
def update(num, lines, arr):
for line, a in zip(lines, arr):
line.set_data(a[:2, num])
line.set_3d_properties(a[2, num])
def animate():
fig = plt.figure()
ax = fig.add_subplot(projection="3d")
arr = get_data([f"output/p{i}.txt" for i in range(100)])
arr = arr[:,:,::10]
N = len(arr[0][0])
lines = [ax.plot(*a[:,1], "o")[0] for a in arr]
ax.set_xlim3d([-500.0, 500.0])
ax.set_xlabel('X')
ax.set_ylim3d([-500.0, 500.0])
ax.set_ylabel('Y')
ax.set_zlim3d([-500.0, 500.0])
ax.set_zlabel('Z')
ani = animation.FuncAnimation(fig, update, N, fargs=(lines, arr),
interval=1,
blit=False)
# ani.save("100_particles.gif", writer=animation.FFMpegFileWriter(fps=30))
plt.show()
if __name__ == "__main__":
animate()