<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Idius Land! &#187; regular update</title>
	<atom:link href="http://www.idius.net/category/regular-update/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.idius.net</link>
	<description>Nathaniel Stickley&#039;s online playground</description>
	<lastBuildDate>Mon, 06 Feb 2012 01:48:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>More Images &amp; a New MakeGalaxy Code</title>
		<link>http://www.idius.net/more-images/</link>
		<comments>http://www.idius.net/more-images/#comments</comments>
		<pubDate>Mon, 06 Feb 2012 01:04:47 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[regular update]]></category>

		<guid isPermaLink="false">http://www.idius.net/?p=2110</guid>
		<description><![CDATA[I have had some more time to struggle with practice using Sunrise now. I've managed to sucessfully run the radiative transfer on several GADGET-2 snapshots of merging systems. This required me to make a minor edit to the code.  There was a seemingly arbitrary speed limit in the code which caused it to exit if any [...]]]></description>
			<content:encoded><![CDATA[<p style="line-height: 1.9; text-align: justify;">I have had some more time to <del>struggle with</del> practice using Sunrise now. I've managed to sucessfully run the radiative transfer on several GADGET-2 snapshots of merging systems. This required me to make a minor edit to the code.  There was a seemingly arbitrary speed limit in the code which caused it to exit if any particles moved faster than 1000 km/s. I had to increase the speed limit in order to prevent the code from exiting.  I've contacted Patrik to see if there was a technical reason for the 1000 km/s speed limit. I wouldn't want to break anything.  The code has now been recompiled with CUDA support.  The CUDA version runs noticeably faster, as expected.</p>
<p style="line-height: 1.9; text-align: justify;">In other news, T.J. Cox just made the <a href="https://bitbucket.org/lutorm/makegalaxy ">MakeGalaxy </a>code public on Bitbucket. Someone has uploaded a new flexible version of <a href="https://bitbucket.org/surftour/flexcombinegalaxies">CombineGalaxies</a> to Bitbucket as well. To download the Mercurial repositories use:</p>
<pre escaped="true" lang="C++">hg clone <a href="https://bitbucket.org/lutorm/makegalaxy" class="autohyperlink" title="https://bitbucket.org/lutorm/makegalaxy" target="_blank">bitbucket.org/lutorm/makegalaxy</a>
hg clone <a href="https://bitbucket.org/surftour/flexcombinegalaxies" class="autohyperlink" title="https://bitbucket.org/surftour/flexcombinegalaxies" target="_blank">bitbucket.org/surftour/flexcombinegalaxies</a></pre>
<p>So now all of the codes that I'm using are public except for P-GADGET-2.</p>
<p style="line-height: 1.9; text-align: justify;">Here are some images of two spiral galaxies in the process of merging. This is a single snapshot from three different viewpoints after the "first pass."  The color images were generated from the FITS file using Patrik's Python code as described <a href="http://code.google.com/p/sunrise/wiki/MakingColorImages">here</a>. I used <span style="font-family: courier;">scale=(1.002,0.647,1.1)</span> for the RGB intensity scale and then I modified the output images by adding a very slight Gaussian blur. The fourth image below is a screenshot of the system monitor during a memory-intensive part of a high resolution run.</p>

<a href='http://www.idius.net/more-images/broadband_test-fits-0-2/' title='broadband_test.fits-0'><img width="150" height="150" src="http://www.idius.net/wp-content/uploads/2012/02/broadband_test.fits-0-150x150.png" class="attachment-thumbnail" alt="broadband_test.fits-0" title="broadband_test.fits-0" /></a>
<a href='http://www.idius.net/more-images/broadband_test-fits-3-2/' title='broadband_test.fits-3'><img width="150" height="150" src="http://www.idius.net/wp-content/uploads/2012/02/broadband_test.fits-3-150x150.png" class="attachment-thumbnail" alt="broadband_test.fits-3" title="broadband_test.fits-3" /></a>
<a href='http://www.idius.net/more-images/broadband_test-fits-4-2/' title='broadband_test.fits-4'><img width="150" height="150" src="http://www.idius.net/wp-content/uploads/2012/02/broadband_test.fits-4-150x150.png" class="attachment-thumbnail" alt="broadband_test.fits-4" title="broadband_test.fits-4" /></a>
<a href='http://www.idius.net/more-images/mcrx-memory-resources/' title='mcrx-memory-resources'><img width="150" height="150" src="http://www.idius.net/wp-content/uploads/2012/02/mcrx-memory-resources-150x150.png" class="attachment-thumbnail" alt="mcrx-memory-resources" title="mcrx-memory-resources" /></a>

<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://www.idius.net/more-images/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>First Sunrise Images</title>
		<link>http://www.idius.net/first-sunrise-images/</link>
		<comments>http://www.idius.net/first-sunrise-images/#comments</comments>
		<pubDate>Mon, 30 Jan 2012 07:08:16 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[regular update]]></category>

		<guid isPermaLink="false">http://www.idius.net/?p=2081</guid>
		<description><![CDATA[After spending quite a bit of time moving to a new apartment (cleaning, packing, moving, more cleaning, and unpacking), I have had time to try using Patrik Jonsson's Sunrise code.  The instructions on the Sunrise wiki were quite helpful. I ran into very few problems in the process. The biggest "problem" was a minor bug that took [...]]]></description>
			<content:encoded><![CDATA[<p style="line-height: 1.8; text-align: justify;">After spending quite a bit of time moving to a new apartment (cleaning, packing, moving, more cleaning, and unpacking), I have had time to try using Patrik Jonsson's Sunrise code.  The instructions on the Sunrise wiki were quite helpful. I ran into very few problems in the process. The biggest "problem" was a minor bug that took two minutes or so to figure out; the code requires the environment variable HOST to be defined. The code tries to handle the possibility that the name of the host computer is stored in the variable HOSTNAME (the default situation in Ubuntu), but there's a problem with the implementation:</p>
<pre escaped="true" lang="C++">const char* h=getenv ("HOST");
if(h == 0)
  h = getenv ("HOSTNAME");
assert(h != 0);
string host (h);</pre>
<p style="line-height: 1.8; text-align: justify;">First, <span style="font-family: courier;">h</span> is declared as a const and initialized to the value stored in HOST. If this fails (i.e., if HOST is not defined), the code tries to set <span style="font-family: courier;">h</span> to the value stored in HOSTNAME. Of course <span style="font-family: courier;">h</span> is a constant, so it can't take on any other value! I'll see if the problem described in the previous post still exists. If it does, I'll report both issues to Patrik on the Sunrise mailing list.</p>
<p style="line-height: 1.8; text-align: justify;">Here are the first few images that I generated using Sunrise. The images are only 300x300 pixels and the merger remnant isn't centered properly, but it's a start!</p>

<a href='http://www.idius.net/first-sunrise-images/broadband_test-fits-0/' title='broadband_test.fits-0'><img width="150" height="150" src="http://www.idius.net/wp-content/uploads/2012/01/broadband_test.fits-0-150x150.jpg" class="attachment-thumbnail" alt="broadband_test.fits-0" title="broadband_test.fits-0" /></a>
<a href='http://www.idius.net/first-sunrise-images/broadband_test-fits-1/' title='broadband_test.fits-1'><img width="150" height="150" src="http://www.idius.net/wp-content/uploads/2012/01/broadband_test.fits-1-150x150.jpg" class="attachment-thumbnail" alt="broadband_test.fits-1" title="broadband_test.fits-1" /></a>
<a href='http://www.idius.net/first-sunrise-images/broadband_test-fits-2/' title='broadband_test.fits-2'><img width="150" height="150" src="http://www.idius.net/wp-content/uploads/2012/01/broadband_test.fits-2-150x150.jpg" class="attachment-thumbnail" alt="broadband_test.fits-2" title="broadband_test.fits-2" /></a>
<a href='http://www.idius.net/first-sunrise-images/broadband_test-fits-3/' title='broadband_test.fits-3'><img width="150" height="150" src="http://www.idius.net/wp-content/uploads/2012/01/broadband_test.fits-3-150x150.jpg" class="attachment-thumbnail" alt="broadband_test.fits-3" title="broadband_test.fits-3" /></a>
<a href='http://www.idius.net/first-sunrise-images/broadband_test-fits-4/' title='broadband_test.fits-4'><img width="150" height="150" src="http://www.idius.net/wp-content/uploads/2012/01/broadband_test.fits-4-150x150.jpg" class="attachment-thumbnail" alt="broadband_test.fits-4" title="broadband_test.fits-4" /></a>
<a href='http://www.idius.net/first-sunrise-images/broadband_test-fits-5/' title='broadband_test.fits-5'><img width="150" height="150" src="http://www.idius.net/wp-content/uploads/2012/01/broadband_test.fits-5-150x150.jpg" class="attachment-thumbnail" alt="broadband_test.fits-5" title="broadband_test.fits-5" /></a>

<p>Now I need to play with parameters and learn more about manipulating the FITS files and analyzing spectra.</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://www.idius.net/first-sunrise-images/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sunrise is Compiled!</title>
		<link>http://www.idius.net/sunrise-is-compiled/</link>
		<comments>http://www.idius.net/sunrise-is-compiled/#comments</comments>
		<pubDate>Fri, 30 Dec 2011 23:39:34 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[regular update]]></category>

		<guid isPermaLink="false">http://www.idius.net/?p=2066</guid>
		<description><![CDATA[I have finally managed to compile the latest (default) version of Sunrise! I had to tinker with it periodically over the course of a few days, but I finally managed to do it.  The current version of the code in the Mercurial repository has evidently been designed to compile only with Arepo support, but I [...]]]></description>
			<content:encoded><![CDATA[<p>I have finally managed to compile the latest (default) version of<a href="http://code.google.com/p/sunrise/wiki/SunriseOverview"> Sunrise</a>! I had to tinker with it periodically over the course of a few days, but I finally managed to do it.  The current version of the code in the Mercurial repository has evidently been designed to compile only with <a href="http://www.mpa-garching.mpg.de/~volker/arepo/">Arepo</a> support, but I do not have Arepo and I will not be using Arepo for my project.  It seems that compiling the code without Arepo is planned, but not fully implemented in the current version.  There are several errors that occur when Arepo is absent.  In order to get the code to compile, I had to extensively edit the pre-processor directives.</p>
<p>There may be a cleaner  way of doing this, but this works:</p>
<p>First, in the config.h header, I had to uncomment the line:</p>
<p style="font-family: 'Courier New', Courier, mono; color: #000000;">#undef WITH_AREPO</p>
<p>Then, I wrapped each block of code containing the word "arepo" in</p>
<p style="font-family: 'Courier New', Courier, mono; color: #000000;">#ifdef WITH_AREPO</p>
<p style="font-family: 'Courier New', Courier, mono; color: #000000;">blah blah arepo blah</p>
<p style="font-family: 'Courier New', Courier, mono; color: #000000;">#endif</p>
<p>Some (but not enough) pieces of code were already wrapped in this way. In at least two source files, it was done incorrectly (ir_grid.cc and aux_grid.cc). Once I had properly prevented all Arepo-specific code from being compiled, the compilation was successful.  I now have the three executables <strong>sfrhist</strong>, <strong>mcrx</strong>, and <strong>broadband</strong>.  I haven't tried running the exucutables yet---except for the very simple test of seeing whether they ask for input files.  I also haven't attempted to compile with CUDA support, but both of these tasks should be completed soon and I'll find out if there are any run-time errors in this version...fun!</p>
<p>&nbsp;</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://www.idius.net/sunrise-is-compiled/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>And Now, A Two-Point Cubic Spline</title>
		<link>http://www.idius.net/and-now-a-two-point-cubic-spline/</link>
		<comments>http://www.idius.net/and-now-a-two-point-cubic-spline/#comments</comments>
		<pubDate>Fri, 11 Nov 2011 23:10:06 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[regular update]]></category>

		<guid isPermaLink="false">http://www.idius.net/?p=1983</guid>
		<description><![CDATA[The simple quadratic spline discussed my previous post seems to be sufficient for interpolating particle positions between two GADGET-2 snapshots for the purposes of making animations, but it's also possible to use a cubic spline for the task.  The advantages of using a cubic spline are (1) it can be more accurate---especially in cases where [...]]]></description>
			<content:encoded><![CDATA[<p style="line-height: 1.9; text-align: justify;">The simple quadratic spline discussed my previous post seems to be sufficient for interpolating particle positions between two GADGET-2 snapshots for the purposes of making animations, but it's also <em>possible</em> to use a cubic spline for the task.  The advantages of using a cubic spline are (1) it can be more accurate---especially in cases where the acceleration changes sign <em>once</em> between snapshots, and (2) the derivatives at the end-points of the spline match the derivatives specified in the input data. In the case of the quadratic spline, if the acceleration (second derivative) changes sign even once during the interval, the interpolation is poor and the derivative of the spline at the end points is not guaranteed to match the specified value. Thus, in the case of the quadratic spline, the derivative is generally discontinuous when moving from one interval to another. This doesn't matter too much when making animations with reasonably small intervals, but it would be important for certain other situations. The disadvantage of the cubic spline is that it adds complexity.</p>
<p style="line-height: 1.9; text-align: justify;">Cubic spline interpolation seems to be quite popular. Derivations of the general method can be found in most textbooks on numerical methods. I'll just discuss the specific result that's useful for my application---the cubic spline in terms of the end-point positions and velocities. To derive the result, we just have to slightly modify the derivation given in the previous post. We add a jerk term <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_94f349c33b9cd5a578f9d9f44fa4ded3.gif' style='vertical-align: middle; border: none; ' class='tex' alt="\mathbf{j}(t)" /></span><script type='math/tex'>\mathbf{j}(t)</script> (third derivative of the position with respect to time) to the third and fourth Taylor expansions,</p>
<p><p style='text-align:center;'><span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_e9dbd4c610291255990451ea2faee064.gif' style='vertical-align: middle; border: none;' class='tex' alt="\mathbf{r}_{0}\approx\mathbf{r}(t)+(t_{0}-t)\mathbf{v}(t)+\frac{1}{2}(t_{0}-t)^2\mathbf{a}(t)" /></span><script type='math/tex;  mode=display'>\mathbf{r}_{0}\approx\mathbf{r}(t)+(t_{0}-t)\mathbf{v}(t)+\frac{1}{2}(t_{0}-t)^2\mathbf{a}(t)</script></p></p>
<p><p style='text-align:center;'><span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_effd35d5c7b27075e17b491fdb72c864.gif' style='vertical-align: middle; border: none;' class='tex' alt="\mathbf{r}_{1}\approx\mathbf{r}(t)+(t_{1}-t)\mathbf{v}(t)+\frac{1}{2}(t_{1}-t)^2\mathbf{a}(t)" /></span><script type='math/tex;  mode=display'>\mathbf{r}_{1}\approx\mathbf{r}(t)+(t_{1}-t)\mathbf{v}(t)+\frac{1}{2}(t_{1}-t)^2\mathbf{a}(t)</script></p></p>
<p><p style='text-align:center;'><span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_5f4f2b328806e8f3153f538dce537be4.gif' style='vertical-align: middle; border: none;' class='tex' alt="\mathbf{v}_{0}\approx\mathbf{v}(t)+(t_{0}-t)\mathbf{a}(t)+\frac{1}{2}(t_{1}-t)^2\mathbf{j}(t)" /></span><script type='math/tex;  mode=display'>\mathbf{v}_{0}\approx\mathbf{v}(t)+(t_{0}-t)\mathbf{a}(t)+\frac{1}{2}(t_{1}-t)^2\mathbf{j}(t)</script></p></p>
<p><p style='text-align:center;'><span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_54b00de8dc993e051322cd574d176ff0.gif' style='vertical-align: middle; border: none;' class='tex' alt="\mathbf{v}_{1}\approx\mathbf{v}(t)+(t_{1}-t)\mathbf{a}(t)+\frac{1}{2}(t_{1}-t)^2\mathbf{j}(t)" /></span><script type='math/tex;  mode=display'>\mathbf{v}_{1}\approx\mathbf{v}(t)+(t_{1}-t)\mathbf{a}(t)+\frac{1}{2}(t_{1}-t)^2\mathbf{j}(t)</script></p></p>
<p style="line-height: 1.9; text-align: justify;">and solve the system of equations for <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_5f5902a6c4b87dfc95b7c7ad2d2e9f6a.gif' style='vertical-align: middle; border: none; ' class='tex' alt="\mathbf{r}(t)" /></span><script type='math/tex'>\mathbf{r}(t)</script>. There are, of course, several ways of doing this. I'll skip the details and show the end result. I defined</p>
<p><p style='text-align:center;'><span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_d77dba6896f6129625b50432ca9f95db.gif' style='vertical-align: middle; border: none;' class='tex' alt="\delta t \equiv t_1-t_0,\qquad \tau_0 \equiv t_0-t,\qquad \tau_1 \equiv t_1-t" /></span><script type='math/tex;  mode=display'>\delta t \equiv t_1-t_0,\qquad \tau_0 \equiv t_0-t,\qquad \tau_1 \equiv t_1-t</script></p></p>
<p>In terms of these definitions,</p>
<p><p style='text-align:center;'><span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_c74c75f7b54e7ce2fef420af1d0ea896.gif' style='vertical-align: middle; border: none;' class='tex' alt="\displaystyle\mathbf{r}(t)=\frac{\mathbf{r}_0\tau_1^2+\mathbf{r}_1\tau_0 ^2+\tau_0\tau_1(\mathbf{v}_1\tau_0 ^2-\mathbf{v}_0\tau_1^2)/\delta t}{\tau_1^2+\tau_0^2}" /></span><script type='math/tex;  mode=display'>\displaystyle\mathbf{r}(t)=\frac{\mathbf{r}_0\tau_1^2+\mathbf{r}_1\tau_0 ^2+\tau_0\tau_1(\mathbf{v}_1\tau_0 ^2-\mathbf{v}_0\tau_1^2)/\delta t}{\tau_1^2+\tau_0^2}</script></p></p>
<p>This can be written more compactly as</p>
<p><p style='text-align:center;'><span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_943c13e04a84ef7642fef2927132d7fe.gif' style='vertical-align: middle; border: none;' class='tex' alt="\displaystyle\mathbf{r}(t)=\frac{\mathbf{r}_0+\rho \mathbf{r}_1+(\rho \mathbf{v}_1-\mathbf{v}_0)\tau_1\tau_0/\delta t}{\rho+1}" /></span><script type='math/tex;  mode=display'>\displaystyle\mathbf{r}(t)=\frac{\mathbf{r}_0+\rho \mathbf{r}_1+(\rho \mathbf{v}_1-\mathbf{v}_0)\tau_1\tau_0/\delta t}{\rho+1}</script></p></p>
<p>where</p>
<p><p style='text-align:center;'><span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_ad4969b492c7d3b649feb004fc55bad8.gif' style='vertical-align: middle; border: none;' class='tex' alt="\rho\equiv\frac{\tau_0^2}{\tau_1^2}=\frac{(t_0-t)^2}{(t_1-t)^2}" /></span><script type='math/tex;  mode=display'>\rho\equiv\frac{\tau_0^2}{\tau_1^2}=\frac{(t_0-t)^2}{(t_1-t)^2}</script></p></p>
<p style="line-height: 1.9; text-align: justify;">As an example, the cubic function generated by this technique when given values corresponding to <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_3e21673ce6c9b09f9ec50b7237248576.gif' style='vertical-align: middle; border: none; ' class='tex' alt="\sin(x)" /></span><script type='math/tex'>\sin(x)</script> at <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_e11729b0b65ecade3fc272548a3883fc.gif' style='vertical-align: middle; border: none; padding-bottom:1px;' class='tex' alt="x=0" /></span><script type='math/tex'>x=0</script> and <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_e37d34833b0a0055d67f9683c973dc68.gif' style='vertical-align: middle; border: none; padding-bottom:1px;' class='tex' alt="x=2\pi" /></span><script type='math/tex'>x=2\pi</script> is</p>
<p><p style='text-align:center;'><span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_89814b6c4fcabc874eea6d4a64f38cc5.gif' style='vertical-align: middle; border: none;' class='tex' alt="\displaystyle s(x)=\frac{(2\pi-x)(\pi-x)x}{x^2-2\pi x+2\pi^2}" /></span><script type='math/tex;  mode=display'>\displaystyle s(x)=\frac{(2\pi-x)(\pi-x)x}{x^2-2\pi x+2\pi^2}</script></p></p>
<p>In the plot below, <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_3e21673ce6c9b09f9ec50b7237248576.gif' style='vertical-align: middle; border: none; ' class='tex' alt="\sin(x)" /></span><script type='math/tex'>\sin(x)</script> is the blue curve and <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_c8680fa208df369c16fc14c68f7d5242.gif' style='vertical-align: middle; border: none; ' class='tex' alt="s(x)" /></span><script type='math/tex'>s(x)</script> is the dotted black curve.</p>
<p><img class="alignleft size-full wp-image-2002" title="cubic-spline" src="http://www.idius.net/wp-content/uploads/2011/11/cubic-spline.png" alt="" width="700" height="485" /></p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://www.idius.net/and-now-a-two-point-cubic-spline/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quadratic Spline Interpolation</title>
		<link>http://www.idius.net/quadratic-spline-interpolation/</link>
		<comments>http://www.idius.net/quadratic-spline-interpolation/#comments</comments>
		<pubDate>Thu, 10 Nov 2011 08:17:55 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[regular update]]></category>

		<guid isPermaLink="false">http://www.idius.net/?p=1907</guid>
		<description><![CDATA[While animating my first GADGET-2 galaxy mergers, I discovered that setting the frame rate to the common value of 25 frames per second resulted in movies that were too fast. The complexity of the merger process couldn't be appreciated--even though the snapshot interval was quite small (0.005 simulation time units). I had to interpolate the [...]]]></description>
			<content:encoded><![CDATA[<p style="line-height: 1.9; text-align: justify;">While animating my first GADGET-2 galaxy mergers, I discovered that setting the frame rate to the common value of 25 frames per second resulted in movies that were too fast. The complexity of the merger process couldn't be appreciated--even though the snapshot interval was quite small (0.005 simulation time units). I had to interpolate the GADGET-2 snapshots in order to produce intermediate frames that could be used to slow the animation down. Linear interpolation didn't work well enough to meet my standards, so I looked for an efficient quadratic interpolation scheme. I wanted to perform a quadratic interpolation using only two snapshots at a time (a quadratic interpolation using two snapshots is possible in this case because each snapshot contains particle position and velocity information). The first thing that came to mind was simply using the familiar expression</p>
<p><p style='text-align:center;'><span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_8fdba6f27f898b4c26c493a42ac9047a.gif' style='vertical-align: middle; border: none;' class='tex' alt="\displaystyle\mathbf{r}(t)=\mathbf{r}_0+\mathbf{v}t" /></span><script type='math/tex;  mode=display'>\displaystyle\mathbf{r}(t)=\mathbf{r}_0+\mathbf{v}t</script></p></p>
<p style="line-height: 1.9; text-align: justify;">to take a half-step forward from the first snapshot and a half step backward from the second snapshot and then average the two results together to estimate the likely position of each particle in the snapshot like this:</p>
<p><p style='text-align:center;'><span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_0ca5536b8de1b3bbfb9e025ab837c36a.gif' style='vertical-align: middle; border: none;' class='tex' alt="\displaystyle\mathbf{r}_{1/2}=\frac{1}{2}(\mathbf{r}_0+\mathbf{r}_1)+\frac{1}{2}\left(\mathbf{v}_0\frac{\delta t}{2} - \mathbf{v}_1\frac{\delta t}{2}\right)" /></span><script type='math/tex;  mode=display'>\displaystyle\mathbf{r}_{1/2}=\frac{1}{2}(\mathbf{r}_0+\mathbf{r}_1)+\frac{1}{2}\left(\mathbf{v}_0\frac{\delta t}{2} - \mathbf{v}_1\frac{\delta t}{2}\right)</script></p></p>
<p style="line-height: 1.9; text-align: justify;">Where <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_991e95055651fa1f4e2eb9dda23f4b08.gif' style='vertical-align: middle; border: none; ' class='tex' alt="\delta t" /></span><script type='math/tex'>\delta t</script> is the time interval between snapshots <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_cfcd208495d565ef66e7dff9f98764da.gif' style='vertical-align: middle; border: none; padding-bottom:1px;' class='tex' alt="0" /></span><script type='math/tex'>0</script> and <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_c4ca4238a0b923820dcc509a6f75849b.gif' style='vertical-align: middle; border: none; padding-bottom:1px;' class='tex' alt="1" /></span><script type='math/tex'>1</script>, <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_dcf5159c19c96919f0acafc07fd4ffe3.gif' style='vertical-align: middle; border: none; ' class='tex' alt="\mathbf{r}_{1/2}" /></span><script type='math/tex'>\mathbf{r}_{1/2}</script> is the position of a particle at time <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_edafc6e58ba5b9e1ebcd9ecd78dfbd14.gif' style='vertical-align: middle; border: none; ' class='tex' alt="\delta t/2" /></span><script type='math/tex'>\delta t/2</script> after snapshot <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_cfcd208495d565ef66e7dff9f98764da.gif' style='vertical-align: middle; border: none; padding-bottom:1px;' class='tex' alt="0" /></span><script type='math/tex'>0</script>, <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_389a2eefd77138bfb77875ace59c2db5.gif' style='vertical-align: middle; border: none; padding-bottom:1px;' class='tex' alt="\mathbf{r}_0" /></span><script type='math/tex'>\mathbf{r}_0</script>, <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_dd713ed1faf135e5b454816065dc93b0.gif' style='vertical-align: middle; border: none; padding-bottom:1px;' class='tex' alt="\mathbf{r}_1" /></span><script type='math/tex'>\mathbf{r}_1</script>, <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_276824969ee0b642db5425f2a835ccde.gif' style='vertical-align: middle; border: none; padding-bottom:1px;' class='tex' alt="\mathbf{v}_0" /></span><script type='math/tex'>\mathbf{v}_0</script>, and <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_09a0467830b0cb52cae6bef87d434df9.gif' style='vertical-align: middle; border: none; padding-bottom:1px;' class='tex' alt="\mathbf{v}_1" /></span><script type='math/tex'>\mathbf{v}_1</script> are the positions and velocities of the particle at snapshot <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_cfcd208495d565ef66e7dff9f98764da.gif' style='vertical-align: middle; border: none; padding-bottom:1px;' class='tex' alt="0" /></span><script type='math/tex'>0</script> and snapshot <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_c4ca4238a0b923820dcc509a6f75849b.gif' style='vertical-align: middle; border: none; padding-bottom:1px;' class='tex' alt="1" /></span><script type='math/tex'>1</script>. This method is slightly better than linear interpolation, but not as good as using a quadratic spline. I tested it out and the results were disappointing. I searched my computational physics and numerical analysis textbooks and searched the web, but I couldn't find what I was looking for, so I derived the method myself. My final result was<br />
<p style='text-align:center;'><span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_f6b4e819330641cf0ab13a1bd0ffed24.gif' style='vertical-align: middle; border: none;' class='tex' alt="\displaystyle\mathbf{r}(t)=\frac{1}{\delta t}\left[\mathbf{r}_0(t_1-t)-\mathbf{r}_1(t_0-t)\right]+\frac{1}{2\delta t}\left(\mathbf{v}_1-\mathbf{v}_0\right)(t_1-t)(t_0-t)" /></span><script type='math/tex;  mode=display'>\displaystyle\mathbf{r}(t)=\frac{1}{\delta t}\left[\mathbf{r}_0(t_1-t)-\mathbf{r}_1(t_0-t)\right]+\frac{1}{2\delta t}\left(\mathbf{v}_1-\mathbf{v}_0\right)(t_1-t)(t_0-t)</script></p><br />
This is very closely related to a quadratic Bézier curve. The derivation follows:</p>
<p>The Taylor expansion of a function <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_50bbd36e1fd2333108437a2ca378be62.gif' style='vertical-align: middle; border: none; ' class='tex' alt="f(x)" /></span><script type='math/tex'>f(x)</script> about the point <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_8b475aba0115f67a9c0f88a51222f71d.gif' style='vertical-align: middle; border: none; padding-bottom:1px;' class='tex' alt="x=x_0" /></span><script type='math/tex'>x=x_0</script> is</p>
<p><p style='text-align:center;'><span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_73f3e6a2ef476e48cd1d4ffbde84d545.gif' style='vertical-align: middle; border: none;' class='tex' alt="\displaystyle f(x)=f(x_0)+(x-x_0)f'(x_0)+\frac{1}{2}(x-x_0)^2 f''(x_0)+\cdots" /></span><script type='math/tex;  mode=display'>\displaystyle f(x)=f(x_0)+(x-x_0)f'(x_0)+\frac{1}{2}(x-x_0)^2 f''(x_0)+\cdots</script></p></p>
<p style="line-height: 1.9; text-align: justify;">It is possible to approximate the value of the function at <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_3e0d691f3a530e6c7e079636f20c111b.gif' style='vertical-align: middle; border: none; padding-bottom:1px;' class='tex' alt="x_0" /></span><script type='math/tex'>x_0</script> using a Taylor expansion by swapping <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_9dd4e461268c8034f5c8564e155c67a6.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="x" /></span><script type='math/tex'>x</script> with <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_3e0d691f3a530e6c7e079636f20c111b.gif' style='vertical-align: middle; border: none; padding-bottom:1px;' class='tex' alt="x_0" /></span><script type='math/tex'>x_0</script> in the expansion above and truncating the series:</p>
<p><p style='text-align:center;'><span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_f482f407b2884b70a9d3820b0f4ea5e9.gif' style='vertical-align: middle; border: none;' class='tex' alt="\displaystyle f(x_0)\approx f(x)+(x_0-x)f'(x)+\frac{1}{2}(x_0-x)^2 f''(x)" /></span><script type='math/tex;  mode=display'>\displaystyle f(x_0)\approx f(x)+(x_0-x)f'(x)+\frac{1}{2}(x_0-x)^2 f''(x)</script></p></p>
<p>Writing expansions for <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_389a2eefd77138bfb77875ace59c2db5.gif' style='vertical-align: middle; border: none; padding-bottom:1px;' class='tex' alt="\mathbf{r}_0" /></span><script type='math/tex'>\mathbf{r}_0</script>, <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_dd713ed1faf135e5b454816065dc93b0.gif' style='vertical-align: middle; border: none; padding-bottom:1px;' class='tex' alt="\mathbf{r}_1" /></span><script type='math/tex'>\mathbf{r}_1</script>, <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_276824969ee0b642db5425f2a835ccde.gif' style='vertical-align: middle; border: none; padding-bottom:1px;' class='tex' alt="\mathbf{v}_0" /></span><script type='math/tex'>\mathbf{v}_0</script> and <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_752d6295ec09c76d087c0480fa17b14d.gif' style='vertical-align: middle; border: none; padding-bottom:1px;' class='tex' alt="\mathbf{v_1}" /></span><script type='math/tex'>\mathbf{v_1}</script>,</p>
<p><p style='text-align:center;'><span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_e9dbd4c610291255990451ea2faee064.gif' style='vertical-align: middle; border: none;' class='tex' alt="\mathbf{r}_{0}\approx\mathbf{r}(t)+(t_{0}-t)\mathbf{v}(t)+\frac{1}{2}(t_{0}-t)^2\mathbf{a}(t)" /></span><script type='math/tex;  mode=display'>\mathbf{r}_{0}\approx\mathbf{r}(t)+(t_{0}-t)\mathbf{v}(t)+\frac{1}{2}(t_{0}-t)^2\mathbf{a}(t)</script></p></p>
<p><p style='text-align:center;'><span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_effd35d5c7b27075e17b491fdb72c864.gif' style='vertical-align: middle; border: none;' class='tex' alt="\mathbf{r}_{1}\approx\mathbf{r}(t)+(t_{1}-t)\mathbf{v}(t)+\frac{1}{2}(t_{1}-t)^2\mathbf{a}(t)" /></span><script type='math/tex;  mode=display'>\mathbf{r}_{1}\approx\mathbf{r}(t)+(t_{1}-t)\mathbf{v}(t)+\frac{1}{2}(t_{1}-t)^2\mathbf{a}(t)</script></p></p>
<p><p style='text-align:center;'><span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_6a0c1dac374c8e40664a6e22762ba375.gif' style='vertical-align: middle; border: none;' class='tex' alt="\mathbf{v}_{0}\approx\mathbf{v}(t)+(t_{0}-t)\mathbf{a}(t)" /></span><script type='math/tex;  mode=display'>\mathbf{v}_{0}\approx\mathbf{v}(t)+(t_{0}-t)\mathbf{a}(t)</script></p></p>
<p><p style='text-align:center;'><span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_9ee56a7982ea7258440876ef88f589d5.gif' style='vertical-align: middle; border: none;' class='tex' alt="\mathbf{v}_{1}\approx\mathbf{v}(t)+(t_{1}-t)\mathbf{a}(t)" /></span><script type='math/tex;  mode=display'>\mathbf{v}_{1}\approx\mathbf{v}(t)+(t_{1}-t)\mathbf{a}(t)</script></p></p>
<p>Eliminating <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_7b5c83a563e0dfe090b1926440aa806f.gif' style='vertical-align: middle; border: none; ' class='tex' alt="\mathbf{a}(t)" /></span><script type='math/tex'>\mathbf{a}(t)</script> using the third and fourth equations:</p>
<p><p style='text-align:center;'><span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_3618287588f2a61e577552cc9537fa0b.gif' style='vertical-align: middle; border: none;' class='tex' alt="\displaystyle\mathbf{a}(t)\approx\frac{\mathbf{v}_{1}-\mathbf{v}(t)}{(t_{1}-t)}\approx\frac{\mathbf{v}_{0}-\mathbf{v}(t)}{(t_{0}-t)}" /></span><script type='math/tex;  mode=display'>\displaystyle\mathbf{a}(t)\approx\frac{\mathbf{v}_{1}-\mathbf{v}(t)}{(t_{1}-t)}\approx\frac{\mathbf{v}_{0}-\mathbf{v}(t)}{(t_{0}-t)}</script></p></p>
<p>The first two equations then become</p>
<p><p style='text-align:center;'><span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_864a7b631adfbd06b5d801a51c4217db.gif' style='vertical-align: middle; border: none;' class='tex' alt="\mathbf{r}_{0}\approx\mathbf{r}(t)+\frac{1}{2}(t_{0}-t)[\mathbf{v}_{0}+\mathbf{v}(t)]" /></span><script type='math/tex;  mode=display'>\mathbf{r}_{0}\approx\mathbf{r}(t)+\frac{1}{2}(t_{0}-t)[\mathbf{v}_{0}+\mathbf{v}(t)]</script></p></p>
<p><p style='text-align:center;'><span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_18c7dd60c744f80b4cbf03ee94a0e9a8.gif' style='vertical-align: middle; border: none;' class='tex' alt="\mathbf{r}_{1}\approx\mathbf{r}(t)+\frac{1}{2}(t_{1}-t)[\mathbf{v}_{1}+\mathbf{v}(t)]" /></span><script type='math/tex;  mode=display'>\mathbf{r}_{1}\approx\mathbf{r}(t)+\frac{1}{2}(t_{1}-t)[\mathbf{v}_{1}+\mathbf{v}(t)]</script></p></p>
<p>Now we eliminate <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_9dc831dad0881dd0104c37dfda3ba5e7.gif' style='vertical-align: middle; border: none; ' class='tex' alt="\mathbf{v}(t)" /></span><script type='math/tex'>\mathbf{v}(t)</script> between the two equations</p>
<p><p style='text-align:center;'><span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_885dcb5a02e0f2f58197e51a28f9863b.gif' style='vertical-align: middle; border: none;' class='tex' alt="\frac{2\mathbf{r}_{0}-2\mathbf{r}(t)}{(t_{0}-t)}-\mathbf{v}_{0}=\frac{2\mathbf{r}_{1}-2\mathbf{r}(t)}{(t_{1}-t)}-\mathbf{v}_{1}" /></span><script type='math/tex;  mode=display'>\frac{2\mathbf{r}_{0}-2\mathbf{r}(t)}{(t_{0}-t)}-\mathbf{v}_{0}=\frac{2\mathbf{r}_{1}-2\mathbf{r}(t)}{(t_{1}-t)}-\mathbf{v}_{1}</script></p></p>
<p>Solving for <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_5f5902a6c4b87dfc95b7c7ad2d2e9f6a.gif' style='vertical-align: middle; border: none; ' class='tex' alt="\mathbf{r}(t)" /></span><script type='math/tex'>\mathbf{r}(t)</script> and defining <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_3f604d3d02049523a57b67bc5402d8c6.gif' style='vertical-align: middle; border: none; ' class='tex' alt="\delta t=t_1-t_0" /></span><script type='math/tex'>\delta t=t_1-t_0</script> yields the result stated above.</p>
<p style="line-height: 1.9; text-align: justify;">This is a decent approximation for the motion of each particle between snapshots. In fact, it's a pretty good approximation for any function with specified end point values and first derivatives <em>as long as the sign of the second derivative doesn't change during the interval</em>.</p>
<p style="line-height: 1.9; text-align: justify;">For demonstration purposes, the blue curve below is <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_3e21673ce6c9b09f9ec50b7237248576.gif' style='vertical-align: middle; border: none; ' class='tex' alt="\sin(x)" /></span><script type='math/tex'>\sin(x)</script>. The black dashed curve is the interpolating parabola generated by the expression derived above for endpoints at <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_a578905d96770d30a5040bbb9ff01cde.gif' style='vertical-align: middle; border: none; ' class='tex' alt="x_0=0" /></span><script type='math/tex'>x_0=0</script> and <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_0d1f2292a6c264e591184a39b4a64e13.gif' style='vertical-align: middle; border: none; padding-bottom:1px;' class='tex' alt="x_1=\pi" /></span><script type='math/tex'>x_1=\pi</script>. The red dashed curve is the interpolating parabola for endpoints at <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_a578905d96770d30a5040bbb9ff01cde.gif' style='vertical-align: middle; border: none; ' class='tex' alt="x_0=0" /></span><script type='math/tex'>x_0=0</script> and <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_f28f9281ce83fb805c8d86ac08ebd618.gif' style='vertical-align: middle; border: none; ' class='tex' alt="x_1=\pi/2" /></span><script type='math/tex'>x_1=\pi/2</script></p>
<p style="line-height: 1.9; text-align: justify;"><a href="http://www.idius.net/quadratic-spline-interpolation/interp/" rel="attachment wp-att-1971"><img class="alignleft size-full wp-image-1971" title="interp" src="http://www.idius.net/wp-content/uploads/2011/11/interp.png" alt="" width="700" height="380" /></a></p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://www.idius.net/quadratic-spline-interpolation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Density profile calculator</title>
		<link>http://www.idius.net/density-profile-calculator/</link>
		<comments>http://www.idius.net/density-profile-calculator/#comments</comments>
		<pubDate>Thu, 24 Feb 2011 20:28:19 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[regular update]]></category>

		<guid isPermaLink="false">http://www.idius.net/?p=1691</guid>
		<description><![CDATA[I had to find an efficient way to plot the density profiles of spherical systems of point particles of varying mass.  Here's a summary: First note that the mass enclosed in a sphere of radius is I'm trying to find , so I'd like to get rid of the integral sign. Thus I differentiate with [...]]]></description>
			<content:encoded><![CDATA[<p>I had to find an efficient way to plot the density profiles of spherical systems of point particles of varying mass.  Here's a summary:</p>
<p>First note that the mass enclosed in a sphere of radius <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_4b43b0aee35624cd95b910189b3dc231.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="r" /></span><script type='math/tex'>r</script> is</p>
<p><p style='text-align:center;'><span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_5144361f3d105824b8d34672f8dfa0cc.gif' style='vertical-align: middle; border: none;' class='tex' alt="\displaystyle M(r)=4\pi\int_0^r\rho(r')r'^2 dr'" /></span><script type='math/tex;  mode=display'>\displaystyle M(r)=4\pi\int_0^r\rho(r')r'^2 dr'</script></p></p>
<p>I'm trying to find <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_555df9e0de1ae9f47776f96266110172.gif' style='vertical-align: middle; border: none; ' class='tex' alt="\rho(r)" /></span><script type='math/tex'>\rho(r)</script>, so I'd like to get rid of the integral sign. Thus I differentiate with respect to <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_4b43b0aee35624cd95b910189b3dc231.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="r" /></span><script type='math/tex'>r</script></p>
<p><p style='text-align:center;'><span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_d0df4fd75102ca457c2d468708172bed.gif' style='vertical-align: middle; border: none;' class='tex' alt="\displaystyle \frac{dM(r)}{dr}=4\pi \rho(r)r^2" /></span><script type='math/tex;  mode=display'>\displaystyle \frac{dM(r)}{dr}=4\pi \rho(r)r^2</script></p></p>
<p>then <p style='text-align:center;'><span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_b8fe475b7b42ef89d610d658e1de7a61.gif' style='vertical-align: middle; border: none;' class='tex' alt="\displaystyle \rho(r)=\frac{1}{4\pi r^2}\frac{dM(r)}{dr}." /></span><script type='math/tex;  mode=display'>\displaystyle \rho(r)=\frac{1}{4\pi r^2}\frac{dM(r)}{dr}.</script></p></p>
<p style="line-height: 175%;">The task has been reduced to the problem of computing <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_0b50890b7ebf25d379915703c0ea595c.gif' style='vertical-align: middle; border: none; ' class='tex' alt="{dM(r)}/{dr}" /></span><script type='math/tex'>{dM(r)}/{dr}</script>, which is rather straightforward.  If a fast sorting algorithm, such as <a href="http://en.wikipedia.org/wiki/Quicksort">quicksort</a>, is used to sort the particles by distance from the center of the spherical distribution (i.e. radius), then a mass array <span style="font-family: 'Courier New', Courier, mono;"> M(i)</span> can be quickly constructed such that each entry <span style="font-family: 'Courier New', Courier, mono;">i</span> is the mass contained between <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_4b43b0aee35624cd95b910189b3dc231.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="r" /></span><script type='math/tex'>r</script> and <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_cf5fa504e70641f7039532dd9662560c.gif' style='vertical-align: middle; border: none; padding-bottom:1px;' class='tex' alt="r+i\delta r" /></span><script type='math/tex'>r+i\delta r</script> for <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_ed1219e7808490a57fdebad26b37382f.gif' style='vertical-align: middle; border: none; padding-bottom:1px;' class='tex' alt="0\leq r\leq R" /></span><script type='math/tex'>0\leq r\leq R</script>, where <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_b489edf86697616c85f2d91401474055.gif' style='vertical-align: middle; border: none; padding-bottom:1px;' class='tex' alt="R=n\delta r" /></span><script type='math/tex'>R=n\delta r</script> and <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_7b8b965ad4bca0e41ab51de7b31363a1.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="n" /></span><script type='math/tex'>n</script> is the number of elements in the array. Then a finite differencing scheme can be used to compute the derivative <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_0b50890b7ebf25d379915703c0ea595c.gif' style='vertical-align: middle; border: none; ' class='tex' alt="{dM(r)}/{dr}" /></span><script type='math/tex'>{dM(r)}/{dr}</script> at each point. Finish by properly handling the case for which the derivative at <span style="font-family: 'Courier New', Courier, mono;">i</span> is vastly different from the derivatives at the surrounding points <span style="font-family: 'Courier New', Courier, mono;">i-1</span> and <span style="font-family: 'Courier New', Courier, mono;">i+1</span>. This problem can be mitigated by using (at least) a central differencing scheme and choosing an appropriate value of <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_a19b9f38b1ae81149d114d7b4049a548.gif' style='vertical-align: middle; border: none; padding-bottom:1px;' class='tex' alt="\delta r" /></span><script type='math/tex'>\delta r</script>; it should be no smaller than the resolution limit of the particle distribution in the region where the density is being computed/plotted.</p>
<p style="line-height: 175%;">There are, of course, several other ways of computing the density profile.  In particular, if the potential has already been computed everywhere, then the density distribution can be inferred from that. The method described above seemed to be the best method for my particular code since the quicksort algorithm typically scales as <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_7240fc2b1420496365aed3256130abb4.gif' style='vertical-align: middle; border: none; ' class='tex' alt="\mathcal{O}(N\log N)" /></span><script type='math/tex'>\mathcal{O}(N\log N)</script> and all of the other operations either scale as <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_8912ad6d334e8ea3efeca6501a953d0b.gif' style='vertical-align: middle; border: none; ' class='tex' alt="\mathcal{O}(N)" /></span><script type='math/tex'>\mathcal{O}(N)</script> or <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_a6e200f05467fb069772a59842a9f43d.gif' style='vertical-align: middle; border: none; ' class='tex' alt="\mathcal{O}(n)" /></span><script type='math/tex'>\mathcal{O}(n)</script>.</p>
<p style="line-height: 175%;"><strong>UPDATE</strong>:  Here's a plot of the density profile using only 10,000 particles and no smoothing (blue line) compared to the exact analytic density profile from which the distribution was built (red line).  Density is in arbitrary units and is scaled by the central density, so <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_61c6d590d0126aebe0ea7b3505dd8836.gif' style='vertical-align: middle; border: none; ' class='tex' alt="\rho = \mbox{const} \rho(r)/\rho_c" /></span><script type='math/tex'>\rho = \mbox{const} \rho(r)/\rho_c</script>.</p>
<p style="line-height: 175%;"><a href="http://www.idius.net/wp-content/uploads/2011/02/density-non-smoothed.png" rel="lightbox[1691]" title="density-non-smoothed"><img class="aligncenter size-medium wp-image-1722" title="density-non-smoothed" src="http://www.idius.net/wp-content/uploads/2011/02/density-non-smoothed-650x430.png" alt="" width="650" height="430" /></a></p>
<p style="line-height: 175%;">When cloud-in-cell smoothing was added (green line below), the result was roughly the same as the un-smoothed version, but with less random variation and some systematic differences; the gradient in the particle number density caused a slight bias toward higher density at larger radii and lower central density. This is expected behavior because the particle distribution has been "blurred" in this case, which softens the density gradient.</p>
<p style="line-height: 175%;"><a href="http://www.idius.net/wp-content/uploads/2011/02/smoothed.png" rel="lightbox[1691]" title="smoothed"><img class="aligncenter size-medium wp-image-1724" title="smoothed" src="http://www.idius.net/wp-content/uploads/2011/02/smoothed-650x424.png" alt="" width="650" height="424" /></a></p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://www.idius.net/density-profile-calculator/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Paper in preparation, P-GADGET-2, &amp; Git</title>
		<link>http://www.idius.net/paper-in-preparation-p-gadget-2-git/</link>
		<comments>http://www.idius.net/paper-in-preparation-p-gadget-2-git/#comments</comments>
		<pubDate>Mon, 21 Feb 2011 22:22:44 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[regular update]]></category>

		<guid isPermaLink="false">http://www.idius.net/?p=1683</guid>
		<description><![CDATA[Last week I finally obtained a copy of the full-physics version of GADGET-2.  According to Desika Narayanan, it's a version which has been verified to work with Sunrise. Once I'm no longer busy with other things, I'll start working with it. I have almost finished writing a cycle 19 HST theory proposal. The deadline is [...]]]></description>
			<content:encoded><![CDATA[<p>Last week I finally obtained a copy of the full-physics version of GADGET-2.  According to Desika Narayanan, it's a version which has been verified to work with Sunrise. Once I'm no longer busy with other things, I'll start working with it.</p>
<p>I have almost finished writing a cycle 19 HST theory proposal. The deadline is in a few days.</p>
<p>I'm in the early stages of working on a paper describing my qualifier project.  After reading through the literature from the last 34 years and thinking about the deficiencies in my project as it stands, I've decided to further modify the code to include several more features.  Yesterday I wrote an energy tracking function and I've begun writing a density profile plotter.  I've also improved the performance of the code somewhat.  Functions for plotting the line-of-sight velocity distribution and for computing the skewness of the distribution will be added shortly.  I may also try writing a hierarchical time-stepping scheme to improve performance further.</p>
<p>I've decided to maintain the qualifier code using a revision control system.  I've used Subversion for projects in the past, but Mercurial and Git seemed to be much better options.  I ultimately decided to use Git.</p>
<p><a href="http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html" target="_blank">Git Tutorial</a>,  <a href="http://www.kernel.org/pub/software/scm/git/docs/user-manual.html" target="_blank">Git Manual</a></p>
<p>Git should also come in handy when collaborating on LaTeX documents.</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://www.idius.net/paper-in-preparation-p-gadget-2-git/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Crunch</title>
		<link>http://www.idius.net/crunch/</link>
		<comments>http://www.idius.net/crunch/#comments</comments>
		<pubDate>Mon, 14 Feb 2011 19:43:07 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[regular update]]></category>

		<guid isPermaLink="false">http://www.idius.net/?p=1632</guid>
		<description><![CDATA[Dr. Gillian Wilson, one of my thesis committee members, was kind enough to provide me with funding to build a workstation for my project. I needed a fast shared memory machine with at least 32 GB of RAM in order to run Sunrise efficiently. After configuring several systems on the HP, Dell, Apple, and other [...]]]></description>
			<content:encoded><![CDATA[<p>Dr. Gillian Wilson, one of my thesis committee members, was kind enough to provide me with funding to build a workstation for my project. I needed a fast shared memory machine with at least 32 GB of RAM in order to run <a href="http://code.google.com/p/sunrise/" target="_blank">Sunrise</a> efficiently. After configuring several systems on the HP, Dell, Apple, and other websites, I discovered that it would be considerably more cost-effective if I designed and built the machine myself. Ideally, I would have built a system consisting of 2 or 4 of Intel's latest Xeon processors and an Nvidia Tesla c2050 card, but I tried to keep the price as low as possible for the level of performance necessary.  I eventually obtained the following combination of components:</p>
<table border="0" align="center">
<tbody style="font-family: Arial, Helvetica, sans-serif;">
<tr>
<td><strong>Motherboard: </strong></td>
<td>Asus KGPE-D16 Dual Socket G34 AMD SR5690 SSI EEB 3.61</td>
</tr>
<tr>
<td><strong>Processors:</strong></td>
<td>2x AMD Opteron 6172 Magny-Cours 2.1 GHz  (24 cores total)</td>
</tr>
<tr>
<td><strong>Memory:</strong></td>
<td>16x 4 GB DDR3 1333 unregistered DRAM (64 GB total)</td>
</tr>
<tr>
<td><strong>Graphics:</strong></td>
<td>EVGA Nvidia GeForce GTX 580 (containing 512 CUDA cores and 1.5 GB GDDR5 )</td>
</tr>
<tr>
<td><strong>System disk:</strong></td>
<td>64 GB Crucial RealSSD C300</td>
</tr>
<tr>
<td><strong>Data disks:</strong></td>
<td>2x 1.0 TB Western Digital Caviar Black WD1002FAEX</td>
</tr>
<tr>
<td><strong>Chassis:</strong></td>
<td>Intel 5U Server Chassis SC5650WSNA, with 1000W PSU</td>
</tr>
</tbody>
</table>
<p><strong>Note 1:</strong> The Magny-Cours Opteron processors are slower per clock cycle than the current Intel Xeons, however (1) the performance of the Magny-Cours systems scales better with core count than Xeon-based machines, (2) the codes that I will be using scale rather well with thread count, (3) the Opterons are considerably cheaper for a given performance level, and (4) The Magny-Cours Opteron processors allowed me to use a large quantity of inexpensive unregistered memory modules.  The only Xeons that support this amount of unregistered memory are approximately twice as expensive as the Opterons. To summarize, I could have built an equivalent machine with fewer Xeon cores running at a higher clock rate, but such a system would have been considerably more expensive.</p>
<p><strong>Note 2:</strong> The GTX 580 graphics card is typically <em>faster</em> than the Tesla c2050 for CUDA as long as the problem can fit in its smaller memory.  The primary deficiency of the GTX is that it was not expressly designed for <em>sustained</em> HPC workloads, and thus it is likely to fail sooner under heavy workloads.  On the other hand, one could buy four GTX 580 cards for less than the price of one Tesla c2050.</p>
<p>I've tentatively named the system "Crunch".  It's running Ubuntu 10.04.2 LTS with the 2.6.38-rc4 Linux kernel.  I'll likely upgrade to the final 2.6.38 kernel when it's released and keep  the kernel version unchanged until I finish my Ph.D. work. I have installed all of the development tools, compilers, and libraries that I think I'll need, including the latest Nvidia driver and CUDA Toolkit.  I have successfully compiled and run sample CUDA programs from the CUDA SDK, as well as my qualifier project code, the ray-tracing code <a href="http://www.povray.org/" target="_blank">POV-Ray 3.7</a>, and benchmarks from the <a href="http://www.phoronix-test-suite.com/" target="_blank">Phoronix Test Suite</a>. I also installed Apache2, PHP5, MySQL, and many modules so that the system can be used as a web server. The latest version of WordPress has been installed on the web server.  The server could potentially be used for data-sharing.</p>
<p>Here are the outputs of <a href="http://idius.net/wp-content/uploads/text-files/bandwidthTest.txt" target="_blank">bandwidthTest</a>, <a href="http://idius.net/wp-content/uploads/text-files/deviceQuery.txt" target="_blank">deviceQuery</a>, <a href="http://idius.net/wp-content/uploads/text-files/hwinfo.txt" target="_blank">hwinfo</a>, <a href="http://idius.net/wp-content/uploads/text-files/lshw.txt" target="_blank">lshw</a>, <a href="http://idius.net/wp-content/uploads/text-files/lsmod.txt" target="_blank">lsmod</a>, <a href="http://idius.net/wp-content/uploads/text-files/lspci.txt" target="_blank">lspci</a>, and  <a href="http://idius.net/wp-content/uploads/text-files/lsusb.txt" target="_blank">lsusb</a>.</p>
<p>For a listing of all software installed from the Ubuntu repositories (i.e. all pre-compiled packages), click <a href="http://idius.net/wp-content/uploads/text-files/installed.txt" target="_blank">here</a>.</p>
<p>Here's a screenshot from the machine's first parallel code execution:</p>
<div id="attachment_1635" class="wp-caption aligncenter" style="width: 660px"><a href="http://www.idius.net/wp-content/uploads/2011/02/first-run.jpg" rel="lightbox[1632]" title="first-run"><img class="size-medium wp-image-1635" title="first-run" src="http://www.idius.net/wp-content/uploads/2011/02/first-run-650x396.jpg" alt="" width="650" height="396" /></a><p class="wp-caption-text">Running my qualifier project code remotely and viewing the gnome-system-monitor using ssh -X.</p></div>
<p>Some images taken during the assembly process:</p>
<p style="text-align: center;"><a href="http://www.idius.net/wp-content/uploads/2011/02/IMG_2793.jpg" rel="lightbox[1632]" title="IMG_2793"><img class="aligncenter size-medium wp-image-1640" title="IMG_2793" src="http://www.idius.net/wp-content/uploads/2011/02/IMG_2793-481x500.jpg" alt="" width="433" height="450" /></a></p>
<div id="attachment_1637" class="wp-caption aligncenter" style="width: 465px"><a href="http://www.idius.net/wp-content/uploads/2011/02/IMG_2787.jpg" rel="lightbox[1632]" title="IMG_2787"><img class="size-medium wp-image-1637  " title="IMG_2787" src="http://www.idius.net/wp-content/uploads/2011/02/IMG_2787-650x323.jpg" alt="" width="455" height="226" /></a><p class="wp-caption-text">The processors (top-side)</p></div>
<div id="attachment_1638" class="wp-caption aligncenter" style="width: 465px"><a href="http://www.idius.net/wp-content/uploads/2011/02/IMG_2790.jpg" rel="lightbox[1632]" title="IMG_2790"><img class="size-medium wp-image-1638  " title="IMG_2790" src="http://www.idius.net/wp-content/uploads/2011/02/IMG_2790-650x362.jpg" alt="" width="455" height="253" /></a><p class="wp-caption-text">Processors (under-side)</p></div>
<p><a href="http://www.idius.net/wp-content/uploads/2011/02/IMG_2803.jpg" rel="lightbox[1632]" title="IMG_2803"><img class="size-thumbnail wp-image-1644 aligncenter" title="IMG_2803" src="http://www.idius.net/wp-content/uploads/2011/02/IMG_2803-150x150.jpg" alt="" width="150" height="150" /></a></p>
<div id="attachment_1643" class="wp-caption aligncenter" style="width: 570px"><a href="http://www.idius.net/wp-content/uploads/2011/02/IMG_2801.jpg" rel="lightbox[1632]" title="IMG_2801"><img class="size-full wp-image-1643" title="IMG_2801" src="http://www.idius.net/wp-content/uploads/2011/02/IMG_2801.jpg" alt="" width="560" height="138" /></a><p class="wp-caption-text">16 DIMMs</p></div>
<div id="attachment_1642" class="wp-caption aligncenter" style="width: 595px"><a href="http://www.idius.net/wp-content/uploads/2011/02/IMG_2797.jpg" rel="lightbox[1632]" title="IMG_2797"><img class="size-medium wp-image-1642" title="IMG_2797" src="http://www.idius.net/wp-content/uploads/2011/02/IMG_2797-650x314.jpg" alt="" width="585" height="283" /></a><p class="wp-caption-text">GTX 580</p></div>
<div id="attachment_1645" class="wp-caption aligncenter" style="width: 595px"><a href="http://www.idius.net/wp-content/uploads/2011/02/IMG_2809.jpg" rel="lightbox[1632]" title="IMG_2809"><img class="size-medium wp-image-1645 " title="IMG_2809" src="http://www.idius.net/wp-content/uploads/2011/02/IMG_2809-650x488.jpg" alt="" width="585" height="439" /></a><p class="wp-caption-text">A populated server board</p></div>
<div id="attachment_1639" class="wp-caption aligncenter" style="width: 504px"><a href="http://www.idius.net/wp-content/uploads/2011/02/IMG_2792.jpg" rel="lightbox[1632]" title="IMG_2792"><img class="size-medium wp-image-1639" title="IMG_2792" src="http://www.idius.net/wp-content/uploads/2011/02/IMG_2792-494x500.jpg" alt="" width="494" height="500" /></a><p class="wp-caption-text">Heatsink and fan</p></div>
<p style="text-align: center;">
<div id="attachment_1646" class="wp-caption aligncenter" style="width: 514px"><a href="http://www.idius.net/wp-content/uploads/2011/02/IMG_2810.jpg" rel="lightbox[1632]" title="IMG_2810"><img class="size-medium wp-image-1646  " title="IMG_2810" src="http://www.idius.net/wp-content/uploads/2011/02/IMG_2810-622x500.jpg" alt="" width="504" height="405" /></a><p class="wp-caption-text">Almost finished</p></div>
<div id="attachment_1647" class="wp-caption aligncenter" style="width: 497px"><a href="http://www.idius.net/wp-content/uploads/2011/02/IMG_2811.jpg" rel="lightbox[1632]" title="IMG_2811"><img class="size-medium wp-image-1647" title="IMG_2811" src="http://www.idius.net/wp-content/uploads/2011/02/IMG_2811-487x500.jpg" alt="" width="487" height="500" /></a><p class="wp-caption-text">The finished product</p></div>
<p style="text-align: center;">
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://www.idius.net/crunch/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Beamer</title>
		<link>http://www.idius.net/beamer/</link>
		<comments>http://www.idius.net/beamer/#comments</comments>
		<pubDate>Sun, 12 Dec 2010 07:41:16 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[regular update]]></category>

		<guid isPermaLink="false">http://www.idius.net/?p=1621</guid>
		<description><![CDATA[I used the Beamer class to create the presentation file that I used for my advancement exam.  Beamer is an easy to use tool that makes very nice presentations.  It's much less of a hassle and yields better results than OpenOffice Impress or MS PowerPoint. The source to my presentation can be found here: beamer-presentation-source.zip [...]]]></description>
			<content:encoded><![CDATA[<p>I used the <a href="http://en.wikipedia.org/wiki/Beamer_(LaTeX)">Beamer</a> <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_c51d7e23458ca0e7373a8ed6ab56b2b9.gif' style='vertical-align: middle; border: none; ' class='tex' alt="\LaTeX" /></span><script type='math/tex'>\LaTeX</script> class to create the presentation file that I used for my advancement exam.  Beamer is an easy to use tool that makes very nice presentations.  It's much less of a hassle and yields better results than OpenOffice Impress or MS PowerPoint. The source to my presentation can be found here:</p>
<address><a href="http://idius.net/lectures/beamer-presentation-source.zip">beamer-presentation-source.zip</a></address>
<p>The full source, including the videos that I showed during the presentation, can be found here:</p>
<address><a href="http://idius.net/lectures/beamer-presentation-full.zip">beamer-presentation-full.zip</a></address>
<p>Hopefully these can be of use to someone who is learning to use <a href="http://en.wikipedia.org/wiki/Beamer_(LaTeX)">Beamer</a>. Having examples is a good way of learning. To compile the document, run the shell script called compile.sh or manually issue the commands that you find in the script. Alternatively, a <span class='MathJax_Preview'><img src='http://www.idius.net/wp-content/plugins/latex/cache/tex_c51d7e23458ca0e7373a8ed6ab56b2b9.gif' style='vertical-align: middle; border: none; ' class='tex' alt="\LaTeX" /></span><script type='math/tex'>\LaTeX</script> editor such as <a href="http://kile.sourceforge.net/">Kile</a> can be used to compile the document as long as you tell it to use pdflatex.</p>
<p>The output PDF will end up looking like <a href="http://idius.net/lectures/sigma.pdf">this</a>.</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://www.idius.net/beamer/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Simulation Lectures</title>
		<link>http://www.idius.net/simulation-lectures/</link>
		<comments>http://www.idius.net/simulation-lectures/#comments</comments>
		<pubDate>Mon, 03 May 2010 23:21:22 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[regular update]]></category>

		<guid isPermaLink="false">http://www.idius.net/?p=1320</guid>
		<description><![CDATA[I designed a series of three lectures for my fellow astronomy / astrophysics students here at UC Riverside.  The purpose of the lectures was two-fold: To introduce the students to the essentials of N-body methods and computational fluid dynamics. To motivate me to study the subject in more detail and breadth. Having finished preparing for [...]]]></description>
			<content:encoded><![CDATA[<p>I designed a series of three lectures for my fellow astronomy / astrophysics students here at UC Riverside.  The purpose of the lectures was two-fold:</p>
<ol>
<li>To introduce the students to the essentials of N-body methods and computational fluid dynamics.</li>
<li>To motivate me to study the subject in more detail and breadth.</li>
</ol>
<p>Having finished preparing for the lectures, I can say that the second goal has definitely been met.  Two of the three lectures were presented last week and the feedback has been positive, so it seems that the first goal was also met. Tomorrow is the third and last lecture of the series. After that, I will be able to spend time focusing on my research project once again!</p>
<p>The PDF presentation can be found at <a href="http://www.idius.net/lectures/N-body-methods.pdf">www.idius.net/lectures/N-body-methods.pdf</a>.</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://www.idius.net/simulation-lectures/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

