<?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>hydroniumion</title>
	<atom:link href="http://www.hydroniumion.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.hydroniumion.de</link>
	<description></description>
	<lastBuildDate>Tue, 31 Jan 2012 21:27:55 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Keeping the Desktop tidy</title>
		<link>http://www.hydroniumion.de/general/keeping-the-desktop-tidy/</link>
		<comments>http://www.hydroniumion.de/general/keeping-the-desktop-tidy/#comments</comments>
		<pubDate>Tue, 31 Jan 2012 21:27:55 +0000</pubDate>
		<dc:creator>Jens</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://www.hydroniumion.de/?p=493</guid>
		<description><![CDATA[As I lack the discipline required to keep my desktop uncluttered, I am aiming for a simple bash script, that moves old files and folders into a designated folder on my desktop. Installing a separate software to achieve that seemed to be a little bit redundant, so I tried to come up with a fancy [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.hydroniumion.de/wp-content/uploads/2012/01/tidyScreen.jpg" rel="lightbox[493]"><img class="aligncenter size-large wp-image-494" title="tidyScreen" src="http://www.hydroniumion.de/wp-content/uploads/2012/01/tidyScreen-1024x640.jpg" alt="" width="560" height="350" /></a></p>
<p>As I lack the discipline required to keep my desktop uncluttered, I am aiming for a simple bash script, that moves old files and folders into a designated folder on my desktop. Installing a separate software to achieve that seemed to be a little bit redundant, so I tried to come up with a fancy call to GNU find, that uses &#8211; amongst other things &#8211; regular expressions to match folder and filenames. Unfortunately, the version of find that comes with OS X 10.7 does not support the parameters I needed. I therefore had to combine the find command with some grepping.<span id="more-493"></span>The final script looks like the following:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
&nbsp;
<span style="color: #007800;">TIDYUP</span>=<span style="color: #007800;">$HOME</span><span style="color: #000000; font-weight: bold;">/</span>Desktop
<span style="color: #007800;">TIME</span>=<span style="color: #ff0000;">&quot;4w&quot;</span>
&nbsp;
<span style="color: #007800;">TARGET_FOLDER</span>=<span style="color: #ff0000;">&quot;old&quot;</span>
<span style="color: #007800;">TARGET</span>=<span style="color: #007800;">$HOME</span><span style="color: #000000; font-weight: bold;">/</span>Desktop<span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$TARGET_FOLDER</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># At first, move all toplevel folders to the TARGET folder</span>
<span style="color: #007800;">FOLDERS</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">find</span> <span style="color: #007800;">$TIDYUP</span> <span style="color: #660033;">-type</span> d <span style="color: #660033;">-maxdepth</span> <span style="color: #000000;">1</span> <span style="color: #660033;">-mindepth</span> <span style="color: #000000;">1</span> <span style="color: #660033;">-mtime</span> +<span style="color: #007800;">$TIME</span><span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #660033;">-v</span> <span style="color: #007800;">$TARGET</span><span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #000000; font-weight: bold;">for</span> fI <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #007800;">$FOLDERS</span>
<span style="color: #000000; font-weight: bold;">do</span>
    <span style="color: #c20cb9; font-weight: bold;">mv</span> <span style="color: #007800;">$fI</span> <span style="color: #007800;">$TARGET</span>
<span style="color: #000000; font-weight: bold;">done</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Now do the same with the files</span>
<span style="color: #c20cb9; font-weight: bold;">find</span> <span style="color: #007800;">$TIDYUP</span> \
    <span style="color: #660033;">-type</span> f \
    <span style="color: #660033;">-maxdepth</span> <span style="color: #000000;">1</span> \
    <span style="color: #660033;">-mindepth</span> <span style="color: #000000;">1</span> \
    <span style="color: #660033;">-mtime</span> +<span style="color: #007800;">$TIME</span> \
    <span style="color: #660033;">-exec</span> <span style="color: #c20cb9; font-weight: bold;">mv</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span><span style="color: #7a0874; font-weight: bold;">&#125;</span> <span style="color: #007800;">$TARGET</span> \;</pre></td></tr></table></div>

<p>The script does the following:</p>
<p>The first line specifies the interpreter, which is &#8211; of course &#8211; the bash. Line 3 defines the folder, that should be tidied up and the period in that files and folders may remain in the above specified folder is defined in line 4. I used four weeks, but this choice depends on your personal preferences. For alternative formulations, have a look at the <a href="http://unixhelp.ed.ac.uk/CGI/man-cgi?find" target="_blank">find manpages</a>.</p>
<p>As I needed to define a folder into that the older files and folder are moved, I did so in line 6 and 7. I now have a folder on my desktop that is called &#8220;old&#8221;, where all the old stuff is moved to.</p>
<p>Moving the folders that are directly stored on the desktop is the first real step of the cleaning process. I use find to find all directories on the desktop, that were not modified within the specified period of time. From that output, I remove the target folder and store all that in a variable. Each folder is moved using a for loop.</p>
<p>Getting rid of the outdated files is easier, as I don&#8217;t have to check whether the target folder is part of the things GNU find has found on the desktop. Using the exec statement, the particular files are moved immediately.</p>
<h1>Making the Script available</h1>
<p>In order to make the script globally available, I stored it in my personal bin folder ($HOME/bin) and set the appropriate file permissions:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">chmod</span> +x tidyUpDesktop.sh</pre></div></div>

<p>In my case, this path is already one of the paths, the system look for executable files. If this is not the case with your system, you will have to add it manually:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">PATH</span>=<span style="color: #000000; font-weight: bold;">/</span>path<span style="color: #000000; font-weight: bold;">/</span>to<span style="color: #000000; font-weight: bold;">/</span>your<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">file</span>:<span style="color: #007800;">$PATH</span></pre></div></div>

<p>If you don&#8217;t want to execute the above line every time you open a new shell, then simply put it into your .bashrc.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hydroniumion.de/general/keeping-the-desktop-tidy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Parameter variation in OpenFOAM using PyFoam</title>
		<link>http://www.hydroniumion.de/openfoam/parameter-variation-in-openfoam-using-pyfoam/</link>
		<comments>http://www.hydroniumion.de/openfoam/parameter-variation-in-openfoam-using-pyfoam/#comments</comments>
		<pubDate>Sun, 22 Jan 2012 13:39:53 +0000</pubDate>
		<dc:creator>Jens</dc:creator>
				<category><![CDATA[OpenFOAM]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[PyFoam]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.hydroniumion.de/?p=455</guid>
		<description><![CDATA[Performing parameter variations can be stressful, especially if some parameters have to be altered in various places in an OpenFOAM case. This is where the python modules of PyFoam come in quite handy. I assume, that you have a basic knowledge on how an OpenFOAM case is structured and that you are familiar with programming [...]]]></description>
			<content:encoded><![CDATA[<div class='series_toc'><h4>Series PyFoam</h4><ol><li>Parameter variation in OpenFOAM using PyFoam</li></ol></div> <p>Performing parameter variations can be stressful, especially if some parameters have to be altered in various places in an OpenFOAM case. This is where the python modules of <a href="http://openfoamwiki.net/index.php/Contrib_PyFoam" target="_blank">PyFoam</a> come in quite handy. I assume, that you have a basic knowledge on how an OpenFOAM case is structured and that you are familiar with programming in python. If you need a brief refreshment of your python skills, you can pick <a href="http://wiki.python.org/moin/BeginnersGuide/Programmers" target="_blank">one of these tutorials</a>.<span id="more-455"></span></p>
<h1>1. Preparation</h1>
<p>The first step is to choose a case to do a parameter variation on. For the sake of simplicity, I chose the lid driven cavity as an example. This can be found in the OpenFOAM tutorial folder:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #007800;">$FOAM_TUTORIALS</span><span style="color: #000000; font-weight: bold;">/</span>incompressible<span style="color: #000000; font-weight: bold;">/</span>icoFoam<span style="color: #000000; font-weight: bold;">/</span>cavity</pre></div></div>

<p>To keep the original tutorial unaltered, we need to create a parent folder and copy the cavity tutorial case folder to that directory. Now we need to change to that directory. I chose my OpenFOAM user folder for that</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">run
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> cavityParameterStudy
<span style="color: #7a0874; font-weight: bold;">cd</span> cavityParameterStudy
<span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #660033;">-r</span> <span style="color: #007800;">$FOAM_TUTORIALS</span><span style="color: #000000; font-weight: bold;">/</span>incompressible<span style="color: #000000; font-weight: bold;">/</span>icoFoam<span style="color: #000000; font-weight: bold;">/</span>cavity cavity-template
<span style="color: #7a0874; font-weight: bold;">cd</span> cavity-template</pre></div></div>

<p>The current structure looks like this:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">   <span style="color: #000000; font-weight: bold;">|</span>-cavityParameterStudy
   <span style="color: #000000; font-weight: bold;">|</span>---cavity-template</pre></div></div>

<p>In the following, I will call the cavityParameterStudy folder &#8220;parent folder&#8221; and the cavity-template folder &#8220;template folder&#8221;.</p>
<h1>2. Getting Started</h1>
<p>The basic idea behind doing a parameter variation using PyFoam is to create a template case, clone that via a script and alter the respective parameters in that cloned case. We need to create the python script, that will do all the exhausting work for us (I am a vim fanboy, but please feel free to use whatever editor suites your needs).</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vim</span> parameterVariation.py</pre></div></div>

<p>Before doing anything serious, I do perform organisational steps inside the python script:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">from</span> PyFoam.<span style="color: black;">RunDictionary</span>.<span style="color: black;">SolutionDirectory</span> <span style="color: #ff7700;font-weight:bold;">import</span> SolutionDirectory
<span style="color: #ff7700;font-weight:bold;">from</span> PyFoam.<span style="color: black;">RunDictionary</span>.<span style="color: black;">ParsedParameterFile</span> <span style="color: #ff7700;font-weight:bold;">import</span> ParsedParameterFile
<span style="color: #ff7700;font-weight:bold;">from</span> PyFoam.<span style="color: black;">Basics</span>.<span style="color: black;">DataStructures</span> <span style="color: #ff7700;font-weight:bold;">import</span> Vector
&nbsp;
templateCase = SolutionDirectory<span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;cavity-template&quot;</span>, archive=<span style="color: #008000;">None</span>, paraviewLink=<span style="color: #008000;">False</span><span style="color: black;">&#41;</span></pre></div></div>

<p>Very brief explanation of the above lines:</p>
<ul>
<li>Line one imports a class that can handle an OpenFOAM case folder with all it&#8217;s essential directories. It provides easy access to these folders and the particular dictionaries, as well as a method to clone that case to an other &#8211; not yet existing &#8211; OpenFOAM case.</li>
<li>The PyFoam class, dealing with accessing and altering OpenFOAM dictionaries is imported in line two.</li>
<li>As I am a lazy person, when it comes to tasks that can be simplified significantly by some piece of software, I import the Vector class of PyFoam as well. We will use it, when we alter the velocity boundary condition of the cavity.</li>
<li>An instance of the imported SolutionDirectory is instantiated for the template folder, that contains the case we want to alter systematically.</li>
</ul>
<h1>3. Deciding which Parameters to vary</h1>
<p>Within the scope of this tutorial, we will vary the tangential velocity at the top boundary of the cavity. To reduce the amount of typing, we let python calculate the respective velocities and to do so, an extra line must be added to the header:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">from</span> PyFoam.<span style="color: black;">RunDictionary</span>.<span style="color: black;">SolutionDirectory</span> <span style="color: #ff7700;font-weight:bold;">import</span> SolutionDirectory
<span style="color: #ff7700;font-weight:bold;">from</span> PyFoam.<span style="color: black;">RunDictionary</span>.<span style="color: black;">ParsedParameterFile</span> <span style="color: #ff7700;font-weight:bold;">import</span> ParsedParameterFile
<span style="color: #ff7700;font-weight:bold;">from</span> PyFoam.<span style="color: black;">Basics</span>.<span style="color: black;">DataStructures</span> <span style="color: #ff7700;font-weight:bold;">import</span> Vector
&nbsp;
<span style="color: #808080; font-style: italic;"># Add the following line</span>
<span style="color: #ff7700;font-weight:bold;">from</span> numpy <span style="color: #ff7700;font-weight:bold;">import</span> linspace</pre></div></div>

<p>This imports the <a href="http://docs.scipy.org/doc/numpy/reference/generated/numpy.linspace.html" target="_blank">linspace function from numpy</a>, which divides an interval into an arbitrary amount of steps. This function is used as such:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">uTangential = linspace<span style="color: black;">&#40;</span><span style="color: #ff4500;">0.1</span>,<span style="color: #ff4500;">0.8</span>,<span style="color: #ff4500;">8</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span> uTangential
<span style="color: #66cc66;">&gt;&gt;&gt;</span> <span style="color: #dc143c;">array</span><span style="color: black;">&#40;</span><span style="color: black;">&#91;</span> <span style="color: #ff4500;">0.1</span>,  <span style="color: #ff4500;">0.2</span>,  <span style="color: #ff4500;">0.3</span>,  <span style="color: #ff4500;">0.4</span>,  <span style="color: #ff4500;">0.5</span>,  <span style="color: #ff4500;">0.6</span>,  <span style="color: #ff4500;">0.7</span>,  <span style="color: #ff4500;">0.8</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span></pre></div></div>

<h1>4. Accessing the Boundary Conditions</h1>
<p>What we&#8217;ve learned so far is to import some packages from PyFoam and to create a numpy array with some velocities in it. The next major step is to access the boundary condition file for the velocity and to modify it according to our specifications. Before we do any modifications, we should clone the template into a new case:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">case = templateCase.<span style="color: black;">cloneCase</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;testCase&quot;</span><span style="color: black;">&#41;</span></pre></div></div>

<p>What does this do?</p>
<ul>
<li>Create a new folder on your disk, that is named &#8220;testCase&#8221;.</li>
<li>Copy all <span style="text-decoration: underline;">basic</span> files and folders from &#8220;cavity-template&#8221; over to &#8220;testCase&#8221;. This does not include log files, time-step folder and so on. Just 0/ constant/ and system/. Any other files and folders must be specified explicitly.</li>
<li>Return a new SolutionDirectory object, that points to &#8220;testCase&#8221; and store it in case</li>
</ul>
<p>The reason why to handle the path operations by means of PyFoam and not by manually access all required paths is simply because it is much less error prone, requires less typing and is much faster.</p>
<p>The next step is to access the velocity boundary condition and alter the &#8220;movingWall&#8221; patch:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">velBC = ParsedParameterFile<span style="color: black;">&#40;</span>path.<span style="color: black;">join</span><span style="color: black;">&#40;</span>case.<span style="color: black;">name</span>,<span style="color: #483d8b;">&quot;0&quot;</span>, <span style="color: #483d8b;">&quot;U&quot;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
velBC<span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;boundaryField&quot;</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;movingWall&quot;</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;value&quot;</span><span style="color: black;">&#93;</span>.<span style="color: black;">setUniform</span><span style="color: black;">&#40;</span>uTangential<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span>,<span style="color: #ff4500;">0</span>,<span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span>
velBC.<span style="color: black;">writeFile</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre></div></div>

<p>What it does, line by line:</p>
<ol>
<li>Create a ParsedParameterFile object for the velocity boundary condition file. This can be done for any other file as well, including constant/ and system/ files, if you would like to change some other parameters.</li>
<li>Access the movingWall subdictionary in the boundaryField dictionary of the velocity boundary condition and set the value of the Dirichlet boundary condition to be uniform for all faces on the patch and use the first tangential velocity, that was defined previously using the linspace expression.</li>
<li>Write all changes to the boundary condition.</li>
</ol>
<h1>5. Using a loop</h1>
<p>As the above lines do not account for changing the velocity multiple times, we employ a for loop around the ParsedParameterFile lines, so that the entire script should look like:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">from</span> PyFoam.<span style="color: black;">RunDictionary</span>.<span style="color: black;">SolutionDirectory</span> <span style="color: #ff7700;font-weight:bold;">import</span> SolutionDirectory
<span style="color: #ff7700;font-weight:bold;">from</span> PyFoam.<span style="color: black;">RunDictionary</span>.<span style="color: black;">ParsedParameterFile</span> <span style="color: #ff7700;font-weight:bold;">import</span> ParsedParameterFile
<span style="color: #ff7700;font-weight:bold;">from</span> PyFoam.<span style="color: black;">Basics</span>.<span style="color: black;">DataStructures</span> <span style="color: #ff7700;font-weight:bold;">import</span> Vector
<span style="color: #ff7700;font-weight:bold;">from</span> numpy <span style="color: #ff7700;font-weight:bold;">import</span> linspace
&nbsp;
uTangential = linspace<span style="color: black;">&#40;</span><span style="color: #ff4500;">0.1</span>,<span style="color: #ff4500;">0.8</span>,<span style="color: #ff4500;">8</span><span style="color: black;">&#41;</span>
&nbsp;
templateCase = SolutionDirectory<span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;cavity-template&quot;</span>, archive=<span style="color: #008000;">None</span>, paraviewLink=<span style="color: #008000;">False</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">for</span> uI <span style="color: #ff7700;font-weight:bold;">in</span> uTangential:
    case = templateCase.<span style="color: black;">cloneCase</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;cavity-u%.1f&quot;</span> <span style="color: #66cc66;">%</span>uI<span style="color: black;">&#41;</span>
    velBC = ParsedParameterFile<span style="color: black;">&#40;</span>path.<span style="color: black;">join</span><span style="color: black;">&#40;</span>case.<span style="color: black;">name</span>,<span style="color: #483d8b;">&quot;0&quot;</span>, <span style="color: #483d8b;">&quot;U&quot;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
    velBC<span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;boundaryField&quot;</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;movingWall&quot;</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;value&quot;</span><span style="color: black;">&#93;</span>.<span style="color: black;">setUniform</span><span style="color: black;">&#40;</span>uI,<span style="color: #ff4500;">0</span>,<span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span>
    velBC.<span style="color: black;">writeFile</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre></td></tr></table></div>

<p>This script loops over all defined velocities, clones the template case and stores the correct velocity in the velocity boundary condition. At the current state of the tutorial, the cases must be started manually, though this can be automated fairly easy with PyFoam.BasicRunner. But this will be covered by an extra tutorial.</p>
 <div class='series_links'> </div>]]></content:encoded>
			<wfw:commentRss>http://www.hydroniumion.de/openfoam/parameter-variation-in-openfoam-using-pyfoam/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Compile VTK on Snow Leopard</title>
		<link>http://www.hydroniumion.de/openfoam/compile-vtk-on-snow-leopard/</link>
		<comments>http://www.hydroniumion.de/openfoam/compile-vtk-on-snow-leopard/#comments</comments>
		<pubDate>Thu, 04 Nov 2010 19:42:56 +0000</pubDate>
		<dc:creator>Jens</dc:creator>
				<category><![CDATA[OpenFOAM]]></category>
		<category><![CDATA[OS X]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[VTK]]></category>

		<guid isPermaLink="false">http://www.hydroniumion.de/?p=437</guid>
		<description><![CDATA[Compiling VTK on Mac OS X 10.6 turned out to be much harder than on the Unix systems, I&#8217;ve done that on recently. Unfortunately I did not find any detailed data on how to choose the installation parameters properly. After a lot of try and error and some research, the following procedure worked for me [...]]]></description>
			<content:encoded><![CDATA[<p>Compiling <a href="http://www.vtk.org/" target="_blank">VTK</a> on Mac OS X 10.6 turned out to be much harder than on the Unix systems, I&#8217;ve done that on recently. Unfortunately I did not find any detailed data on how to choose the installation parameters properly. After a lot of try and error and some research, the following procedure worked for me on 10.6.4.</p>
<h1>1. Prerequisities</h1>
<p>I should note that I used the latest version of the git repository and not the tarball. The reason for this was that I would like to be able to update the installation more easily in the future.</p>
<ul>
<li>Grab <a href="http://www.cmake.org/cmake/resources/software.html" target="_blank">cmake</a>. I used the binary version 2.8.3 and install the command line version as well!</li>
<li>Install <a href="http://code.google.com/p/git-osx-installer/" target="_blank">git for mac</a>.</li>
</ul>
<h1>2. Clone the git repository</h1>
<p>The next step is to clone the <a href="http://www.vtk.org/Wiki/VTK/Git" target="_blank">git repository</a>. Before doing that, I created a parent folder to organize the source and binary files.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #007800;">$HOME</span><span style="color: #000000; font-weight: bold;">/</span>Applications<span style="color: #000000; font-weight: bold;">/</span>src<span style="color: #000000; font-weight: bold;">/</span>VTK
<span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #007800;">$HOME</span><span style="color: #000000; font-weight: bold;">/</span>Applications<span style="color: #000000; font-weight: bold;">/</span>src<span style="color: #000000; font-weight: bold;">/</span>VTK</pre></div></div>

<p>In that folder we clone the git repository and checkout the release branch by performing</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">git</span> clone <span style="color: #c20cb9; font-weight: bold;">git</span>:<span style="color: #000000; font-weight: bold;">//</span>vtk.org<span style="color: #000000; font-weight: bold;">/</span>VTK.git VTK
<span style="color: #7a0874; font-weight: bold;">cd</span> VTK
<span style="color: #c20cb9; font-weight: bold;">git</span> checkout release</pre></div></div>

<p><span id="more-437"></span></p>
<h1>3. Cmake</h1>
<p>The cmake configuration differs in some parts from the Unix cmake configuration. Since I&#8217;ve several different versions of <code>gcc</code> installed on my machine, I have to link to the one I&#8217;d like to use. <a href="http://vtk.1045678.n5.nabble.com/Python-Bindings-on-OSX-td1250960.html" target="_blank">If no backward compatibility to 10.5 is required</a>, the best <code>CMAKE_OSX_ARCHITECTURES</code> is <code>x86_64</code> and the usage of <code>i386</code> caused errors after the compilation finished successfully.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"> ccmake ..<span style="color: #000000; font-weight: bold;">/</span>VTK <span style="color: #660033;">-G</span> <span style="color: #ff0000;">&quot;UNIX Makefiles&quot;</span>        \
	 	-DCMAKE_CXX_COMPILER:<span style="color: #007800;">PATH</span>=<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>c++-<span style="color: #000000;">4.2</span> \
		-DCMAKE_C_COMPILER:<span style="color: #007800;">PATH</span>=<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>gcc-<span style="color: #000000;">4.2</span> \
		-DVTK_USE_QVTK:<span style="color: #007800;">BOOL</span>=ON            \
		-DVTK_USE_COCOA:<span style="color: #007800;">BOOL</span>=ON          \
		-DVTK_USE_CARBON:<span style="color: #007800;">BOOL</span>=OFF          \
		-DCMAKE_BUILD_TYPE:<span style="color: #007800;">STRING</span>=Release \
		-DCMAKE_OSX_ARCHITECTURES:<span style="color: #007800;">STRING</span>=x86_64 \
		-DCMAKE_OSX_DEPLOYMENT_TARGET:<span style="color: #007800;">STRING</span>=<span style="color: #000000;">10.6</span> \
		-DBUILD_SHARED_LIBS:<span style="color: #007800;">BOOL</span>=ON \
		-DPYTHON_EXECUTABLE:<span style="color: #007800;">PATH</span>=<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>python \
		-DCMAKE_INSTALL_PREFIX:<span style="color: #007800;">PATH</span>= \
		-DVTK_WRAP_PYTHON:<span style="color: #007800;">BOOL</span>=ON \
		-DVTK_USE_GUISUPPORT:<span style="color: #007800;">BOOL</span>=ON</pre></div></div>

<p>After building the makefiles using this cmake configuration, I had to create a symbolic link to my python site-packages. The installation pointed to a wrong directory and I didn&#8217;t figure out which parameter I had to set to avoid this. Therefore:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>python2.6
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">ln</span> <span style="color: #660033;">-s</span> <span style="color: #000000; font-weight: bold;">/</span>Library<span style="color: #000000; font-weight: bold;">/</span>Python<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">2.6</span><span style="color: #000000; font-weight: bold;">/</span>site-packages <span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>python2.6<span style="color: #000000; font-weight: bold;">/</span>site-packages</pre></div></div>

<p>Now I just compiled on 4 cores</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #660033;">-j</span> <span style="color: #000000;">4</span>
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span></pre></div></div>

<h1>4. Postinstallation</h1>
<p>After the installation, some environmental variables in my <code>$HOME/.bash_profile</code>:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">LD_LIBRARY_PATH</span>=<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>vtk-<span style="color: #000000;">5.6</span>:<span style="color: #007800;">$LD_LIBRARY_PATH</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">PYTHONPATH</span>=<span style="color: #000000; font-weight: bold;">/</span>Library<span style="color: #000000; font-weight: bold;">/</span>Python<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">2.6</span><span style="color: #000000; font-weight: bold;">/</span>site-packages:<span style="color: #007800;">$PYTHONPATH</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">DYLD_LIBRARY_PATH</span>=<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>vtk-<span style="color: #000000;">5.6</span>:<span style="color: #007800;">$DYLD_LIBRARY_PATH</span></pre></div></div>

<p>Done! Now python 2.6 runs with VTK.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hydroniumion.de/openfoam/compile-vtk-on-snow-leopard/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Plotting massive datasets on the fly</title>
		<link>http://www.hydroniumion.de/openfoam/plotting-massive-datasets-on-the-fly/</link>
		<comments>http://www.hydroniumion.de/openfoam/plotting-massive-datasets-on-the-fly/#comments</comments>
		<pubDate>Thu, 14 Oct 2010 11:52:01 +0000</pubDate>
		<dc:creator>Jens</dc:creator>
				<category><![CDATA[OpenFOAM]]></category>
		<category><![CDATA[CFD]]></category>
		<category><![CDATA[gnuplot]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[sed]]></category>

		<guid isPermaLink="false">http://www.hydroniumion.de/?p=390</guid>
		<description><![CDATA[One of the hassles with working on a distant HPC is that you need to push and pull huge amounts of data back and forth. This wouldn&#8217;t be a big issue if you would have a really fast internet connection and/or if you would just need to do that once a day. Unfortunately, neither is [...]]]></description>
			<content:encoded><![CDATA[<p>One of the hassles with working on a distant HPC is that you need to push and pull huge amounts of data back and forth. This wouldn&#8217;t be a big issue if you would have a really fast internet connection and/or if you would just need to do that once a day. Unfortunately, neither is the case for my application. I&#8217;m doing two phase CFD simulations using OpenFOAM and quite large logfiles and datafiles are accumulated during a single simulation. Since I want to check e.g. the convergence of the forces on my geometry during runtime, I need to plot a datafile which increases in size each timestep up to 10MB. This cannot be done on my local machine, since the download of the datafile would take way too long.<span id="more-390"></span>To avoid this issue, I forward the X-session from the HPC cluster to my local machine.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">slogin</span> <span style="color: #660033;">-X</span> <span style="color: #007800;">$user</span><span style="color: #000000; font-weight: bold;">@</span><span style="color: #007800;">$server</span></pre></div></div>

<p>The plotting is done on that cluster and only the output is forwarded to my machine. For the plotting itself, I love to use <a href="http://www.gnuplot.info">gnuplot</a> and its extensive functionality. As a output terminal for gnuplot, I use X11. It allows you to zoom into the data and customize the origin of the visual plot, without having to adjust the plotting parameters inside your gnuplot script.</p>
<p>Assume, that I would like to plot the second column over the first column of a file called <code>forces.dat</code>, the gnuplot file <code>plot.gnp</code> would look like:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">reset
<span style="color: #008000;">set</span> xlabel <span style="color: #483d8b;">'Iterations'</span>
<span style="color: #008000;">set</span> ylabel <span style="color: #483d8b;">'Force [N]'</span>
plot <span style="color: #483d8b;">'forces.dat'</span> using <span style="color: #ff4500;">1</span>:<span style="color: #ff4500;">2</span> <span style="color: #ff7700;font-weight:bold;">with</span> lines title <span style="color: #483d8b;">'not working plot'</span></pre></div></div>

<p>Unfortunately, <a href="http://www.openfoam.com">OpenFOAM</a> stores the forces in a list of vectors. This means, that there are plenty of brackets inside that <code>forces.dat</code> file and gnuplot is not capable of ignoring these brackes. They need to be removed for the plotting, which can be done in several ways and I am using <a href="http://www.hydroniumion.de/openfoam/remove-brackets-from-file">sed</a>. But one question comes up to mind: What if I do not want to execute a <code>load 'plot.gnp'</code> each time, I want to update my plot, since new data is available?</p>
<p>For this purpose I am piping the output of this script directly into the plot and I do not need to store the ouput of  the <a href="http://www.hydroniumion.de/openfoam/remove-brackets-from-file/">small sed script (shown in a previous post)</a> in an additional file:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">plot <span style="color: #483d8b;">&quot;&lt;./removeBrackets.sh&quot;</span> using <span style="color: #ff4500;">1</span>:<span style="color: #ff4500;">2</span> <span style="color: #ff7700;font-weight:bold;">with</span> lines</pre></div></div>

<p>If you would want to visualize e.g. the residuals of a run, which are stored in the logfile of the solver, you are running, you can do the same with a <code>grep</code>, intead of a <code>sed</code>. Or you can use Bernhard&#8217;s <a href="openfoamwiki.net/index.php/Contrib_PyFoam">pyFoam</a> extension, which I highly recommend.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hydroniumion.de/openfoam/plotting-massive-datasets-on-the-fly/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Remove brackets from file</title>
		<link>http://www.hydroniumion.de/openfoam/remove-brackets-from-file/</link>
		<comments>http://www.hydroniumion.de/openfoam/remove-brackets-from-file/#comments</comments>
		<pubDate>Mon, 13 Sep 2010 20:36:10 +0000</pubDate>
		<dc:creator>Jens</dc:creator>
				<category><![CDATA[OpenFOAM]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[gnuplot]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[sed]]></category>

		<guid isPermaLink="false">http://www.hydroniumion.de/?p=377</guid>
		<description><![CDATA[Removing brackets from a huge datafile can be done in multiple ways, but from my point of view, using the unix command sed and regular expressions is the fastest and easiest way to do that. sed -e &#34;s/[(,)]//g&#34; $file &#62; output This comes in handy, if you need to plot data, that is located on [...]]]></description>
			<content:encoded><![CDATA[<p>Removing brackets from a huge datafile can be done in multiple ways, but from my point of view, using the unix command <code>sed</code> and regular expressions is the fastest and easiest way to do that.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">&quot;s/[(,)]//g&quot;</span> <span style="color: #007800;">$file</span> <span style="color: #000000; font-weight: bold;">&gt;</span> output</pre></div></div>

<p>This comes in handy, if you need to plot data, that is located on a cluster or server and you do not want to transfer a 50MB file over the net just for plotting purposes.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hydroniumion.de/openfoam/remove-brackets-from-file/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Snap edges with snappyHexMesh</title>
		<link>http://www.hydroniumion.de/openfoam/snap-edges-with-snappyhexmesh/</link>
		<comments>http://www.hydroniumion.de/openfoam/snap-edges-with-snappyhexmesh/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 08:05:03 +0000</pubDate>
		<dc:creator>Jens</dc:creator>
				<category><![CDATA[OpenFOAM]]></category>
		<category><![CDATA[snappyHexMesh]]></category>

		<guid isPermaLink="false">http://www.hydroniumion.de/?p=409</guid>
		<description><![CDATA[Making use of snappyHexMesh for the mesh generation polarizes, some love it and some hate it. I personally switch between love and hate, depending on the efforts that need to be taken, to get a proper mesh. The major drawback of snappyHexMesh is that it does not respect sharp edges, but creates these jagged edges [...]]]></description>
			<content:encoded><![CDATA[<div class='series_toc'><h4>Series snappyHexMesh</h4><ol><li><a href='http://www.hydroniumion.de/general/snappyhexmesh-tutorial/' title='snappyHexMesh Tutorial'>snappyHexMesh Tutorial</a></li><li><a href='http://www.hydroniumion.de/studium/snappyhexmesh-tutorial-part-2/' title='snappyHexMesh Tutorial Part 2'>snappyHexMesh Tutorial Part 2</a></li><li>Snap edges with snappyHexMesh</li></ol></div> <p><img class="aligncenter size-full wp-image-415" title="badEdges-1" src="http://www.hydroniumion.de/wp-content/uploads/2010/07/badEdges-11.jpg" alt="" width="545" height="168" /></p>
<p>Making use of snappyHexMesh for the mesh generation polarizes, some love it and some hate it. I personally switch between love and hate, depending on the efforts that need to be taken, to get a proper mesh. The major drawback of snappyHexMesh is that it does not respect sharp edges, but creates these jagged edges as shown in the picture above.</p>
<p>Up until today&#8217;s morning, I was pretty much convinced that there is no OpenSource tool for OpenFOAM, that enables snappyHexMesh to snap vertices to sharp edges. But then I&#8217;ve found<a href="http://www.cfd-online.com/Forums/openfoam-meshing-snappyhexmesh/72595-jagged-ragged-edges-1.html"> this on the forum</a>.</p>
<p><a href="http://www.cfd-online.com/Forums/members/niklas.html">Niklas Nordin</a> has written a <a href="http://openfoamwiki.net/index.php/Contrib_snapEdge">tool</a> called snapEdge, that provides exactly this missing functionality. He introduced his code with only a one sentence post.</p>
<blockquote><p>I&#8217;ve written a little program that might help, I call it snapEdge.<cite>Niklas Nordin</cite></p></blockquote>
<p>Unfortunately, I&#8217;ve not had the time to try it, but from what I&#8217;ve read on the <a href="http://www.cfd-online.com/Forums/openfoam-meshing-snappyhexmesh/72595-jagged-ragged-edges-1.html">forum</a> so far it looks pretty promising. As soon as I find the time to try it out, I&#8217;ll update this post.</p>
 <div class='series_links'><a href='http://www.hydroniumion.de/studium/snappyhexmesh-tutorial-part-2/' title='snappyHexMesh Tutorial Part 2'>Previous in series</a> </div>]]></content:encoded>
			<wfw:commentRss>http://www.hydroniumion.de/openfoam/snap-edges-with-snappyhexmesh/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Replace Textmate by vim</title>
		<link>http://www.hydroniumion.de/apple/replace-textmate-by-vim/</link>
		<comments>http://www.hydroniumion.de/apple/replace-textmate-by-vim/#comments</comments>
		<pubDate>Tue, 13 Jul 2010 07:45:41 +0000</pubDate>
		<dc:creator>Jens</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[OS X]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[textmate]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://www.hydroniumion.de/?p=397</guid>
		<description><![CDATA[First of all, this is not going to be yet an other hot tempered discussion on which editor is the best, but a description why and how I switched my workflow from Textmate to vim. 1. Why? This is an easy one. As you might know or at least guess, I am editing files on [...]]]></description>
			<content:encoded><![CDATA[<p>First of all, this is not going to be yet an other hot tempered discussion on which editor is the best, but a description why and how I switched my workflow from <a href="http://macromates.com/">Textmate</a> to <a href="www.vim.org">vim</a>.</p>
<h1>1. Why?</h1>
<div id="attachment_401" class="wp-caption alignright" style="width: 160px"><a href="http://www.hydroniumion.de/wp-content/macvim.jpg" rel="lightbox[397]"><img class="size-thumbnail wp-image-401" title="macvim" src="http://www.hydroniumion.de/wp-content/macvim-150x150.jpg" alt="" width="150" height="150" /></a><p class="wp-caption-text">NerdTree in action</p></div>
<p>This is an easy one. As you might know or at least guess, I am editing files on a <a href="http://en.wikipedia.org/wiki/Cluster_%28computing%29">HPC</a> over the internet and this was a hassle with Textmate. Why? Because I had to mount the <a href="http://en.wikipedia.org/wiki/Cluster_%28computing%29">HPC</a>&#8216;s filesystem via my internet connection and edit the remote files with my local Textmate, which is a really bad idea. It just felt like sedated and still trying to get things done. I was in need of a proper alternative for doing such things, something that could be run in an ssh terminal window. I remembered vim from some administrative jobs on a server, I did some time ago and so I gave vim a try.<span id="more-397"></span></p>
<h1>2. Textmate functionality in vim?</h1>
<p>After having played around for a day or two with vim, I wondered if there is a replacement for my beloved Textmate functions, such as:</p>
<ul>
<li>Snippets</li>
<li>command-t</li>
<li>Projectdrawer</li>
<li>bibtex completion</li>
<li>reference completion for latex documents</li>
</ul>
<p>There are so many plugins for vim, most likely you can find one for everything, you need to do. The Textmate snippet function can be replaced by <a href="http://www.vim.org/scripts/script.php?script_id=1318">vim&#8217;s snippets plugin</a>, which provides a bunch of ready to use snippets for all my beloved languages (c++, python, tex).</p>
<p>An other awesome feature of Textmate is the so called command-t file navigation. This functionality is adopted to vim by the <a href="https://wincent.com/products/command-t">command-t plugin</a>. In my honest opinion, this plugin is way better than the Textmate function, since it supports tabs and splits.</p>
<p>The projectdrawer in Textmate can be replaced in vim, using the <a href="http://www.vim.org/scripts/script.php?script_id=1658">NerdTree plugin</a>, it even supports opening files in new splits, which is not supported in Textmate.</p>
<p>As Textmate offers a nice integration of bibtex bibliographies and latex typesetting and I use this for all my writing, I was anxious to find a way to use this in vim as well. I am currently using <a href="http://vim-latex.sourceforge.net/">vim -latex</a>, which is working quite well. Unfortunately I&#8217;ve found no way to display inline parsed equations in vim, like it is possible with emacs. If you know a way, please let me know (and no, switching to emacs is no option for me).</p>
<h1>3. Conclusion after 10 months of usage</h1>
<p>I don&#8217;t want to go back. I love the splits in vim, the fast editing and that there is no need to take the hands of the keyboard. Just pressing keys, lots of keys. By cloning the <code>.vim</code> folder and <code>.vimrc</code> file in my home directory to a git repository, I have the same vim configuration available on all machines I am using. Regardless of the architecture.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hydroniumion.de/apple/replace-textmate-by-vim/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>snappyHexMesh Tutorial Part 2</title>
		<link>http://www.hydroniumion.de/studium/snappyhexmesh-tutorial-part-2/</link>
		<comments>http://www.hydroniumion.de/studium/snappyhexmesh-tutorial-part-2/#comments</comments>
		<pubDate>Thu, 08 Jul 2010 16:35:20 +0000</pubDate>
		<dc:creator>Jens</dc:creator>
				<category><![CDATA[OpenFOAM]]></category>
		<category><![CDATA[Studies]]></category>
		<category><![CDATA[CFD]]></category>
		<category><![CDATA[snappyHexMesh]]></category>

		<guid isPermaLink="false">http://www.hydroniumion.de/?p=320</guid>
		<description><![CDATA[The first snappyHexMesh tutorial is more or less a little extended listing of the information gained from the OpenFOAM User&#8217;s Guide. This tutorial gives a brief view on how to setup the background mesh and how refinement regions should be configured. As an example, a container vessel is meshed within this tutorial. No prismatic boundary [...]]]></description>
			<content:encoded><![CDATA[<div class='series_toc'><h4>Series snappyHexMesh</h4><ol><li><a href='http://www.hydroniumion.de/general/snappyhexmesh-tutorial/' title='snappyHexMesh Tutorial'>snappyHexMesh Tutorial</a></li><li>snappyHexMesh Tutorial Part 2</li><li><a href='http://www.hydroniumion.de/openfoam/snap-edges-with-snappyhexmesh/' title='Snap edges with snappyHexMesh'>Snap edges with snappyHexMesh</a></li></ol></div> <p>The <a href="http://www.hydroniumion.de/allgemein/snappyhexmesh-tutorial/">first snappyHexMesh tutorial</a> is more or less a little extended listing of the information gained from the OpenFOAM User&#8217;s Guide. This tutorial gives a brief view on how to setup the background mesh and how refinement regions should be configured. As an example, a container vessel is meshed within this tutorial. No prismatic boundary layer will be used for this tutorial.</p>
<p><strong>Update 26.01.2012</strong>:<br />
You can download the geometry of the KRISO Container Vessel (KCS) as STL from <a href="http://www.hydroniumion.de/download/2">here</a>. Thanks to Abe for reminding me to make the download available.</p>
<h1>0. Prerequisities</h1>
<p>Before we start, we need to take some prerequisities</p>
<ol>
<li>Check the quality of the STL file. The surface needs to be as smooth as possible, without any humps.</li>
<li>Check the orientation of the STL file. Are the coordinate axes aligned correctly?</li>
<li>Check the position of the STL file. Is the origin of the STL file located, where it is supposed to be?</li>
<li>Check the scaling of the STL file. Guess&#8230;</li>
<li>Check the format of the STL file. It should be ASCII and not binary. You can have multiple surface groups in your STL file, but the naming should be without whitespaces, such as

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;"> solid OBJECT
    facet normal <span style="color: #0000dd;">1</span> <span style="color: #000040;">-</span><span style="color: #0000dd;">0</span> <span style="color: #0000dd;">0</span>
    <span style="color: #008000;">&#91;</span>...<span style="color: #008000;">&#93;</span></pre></div></div>

</li>
</ol>
<p>Not all features of snappyHexMesh are described within this article. Either have a look into the tutorials, that come with OpenFOAM, or read the <a href="../allgemein/snappyhexmesh-tutorial/">first snappyHexMesh tutorial</a>.</p>
<p><span id="more-320"></span></p>
<h1>1. Background mesh</h1>
<p>Since the entire mesh depends on the background mesh, some thoughts should be spent on the its design. As stated in [1]</p>
<blockquote><p>The cell aspect ratio should be approximately 1, at least near surfaces at which the subsequent snapping procedure is applied [...]<cite>OpenFOAM User&#8217;s Guide [1]</cite></p></blockquote>
<p>Even though one can achieve convergence during the meshing process, if the backgroundmesh does not fullfill this requirement, maintaining the aspect ratio gives notable speedup to the meshing process. Depending on the layout of the computational domain, the number of final cells can be easily adjusted by tweaking the number of cells in the background mesh. Using the <code>levels</code> inside snappyHexMesh often leads to a massive increase of cells, even if the level is increased by only one. But more on this later.</p>
<div id="attachment_329" class="wp-caption alignright" style="width: 160px"><a href="http://www.hydroniumion.de/wp-content/backgroundMesh.jpg" rel="lightbox[320]"><img class="size-thumbnail  wp-image-329" title="backgroundMesh" src="http://www.hydroniumion.de/wp-content/backgroundMesh-150x150.jpg" alt="" width="150" height="150" /></a><p class="wp-caption-text">Closup of the background mesh</p></div>
<p>The layout of the background mesh for the container vessel has been choosen as such, that there is no special refinement region and no grading. The last three cells (upstream of the outlet boundary) have a small grading and a different aspect ratio in x-direction, than all other cells, in order to damp wave before they may be reflected at the outlet. Unfortunately, this cannot be seen easily at this stage of the meshing process. Due to the spatial limits in vertical direction, the ascpect ratio of 1 could not be maintained.</p>
<h1>2. snappyHexMeshDict</h1>
<p>The next step is to adjust the snappyHexMeshDict, where multiple subdictionaries need to be edited and extended.</p>
<h2>2.1 Geometry definition</h2>
<p>As the first step, the geometry dictionary need to be updated. Since our ship is stored in a file called kcs.stl, we need to specify this.</p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;">kcs.<span style="color: #007788;">stl</span>
<span style="color: #008000;">&#123;</span>
     type triSurfaceMesh<span style="color: #008080;">;</span>
     name hull<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></div></div>

<p>Line 3 tells snappyHexMesh, that the STL file contains a triangulated surface mesh and a proper name for that geometry is assigned in line 4, which is used from now on to assign properties to that geometry.</p>
<p>If you need to take multiple phases into account, which is the case for a ship, the area where the free surface is expected needs an additional refinement, in order to resolve the free surface properly. A refinement region is used for this purpose. Several of the so called searchableObjects are implemented in snappyHexMesh, such as</p>
<ul>
<li>searchableSphere</li>
<li>searchableBox</li>
<li>searchableCylinder</li>
<li>searchablePlate</li>
</ul>
<p>For this tutorial, a searchableBox is used exclusively and defined reading</p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;">waterlineBox
<span style="color: #008000;">&#123;</span>
    type searchableBox<span style="color: #008080;">;</span>
    min <span style="color: #008000;">&#40;</span><span style="color: #000040;">-</span><span style="color: #0000dd;">50</span> <span style="color: #000040;">-</span><span style="color: #0000dd;">20</span> <span style="color: #000040;">-</span><span style="color:#800080;">0.1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    max <span style="color: #008000;">&#40;</span><span style="color: #0000dd;">50</span> <span style="color: #0000dd;">20</span> <span style="color:#800080;">0.1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></div></div>

<h2>2.2 castellatedMeshControls</h2>
<p>Up to now, snappyHexMesh does only know the location and dimensions of some surface and volume objects. For the meshing process, the level of refinement and the direction relative to the surfaces/volumes need to be specified, which is done in the castellatedMeshControls subdictionary.</p>
<p>The refinement levels for the STL surfaces need to be specified. There is no theoretical nessecity to specify two different levels. But since the container vessel has lots of areas where the curvature does not change, larger cells can be applied there. SnappyHexMesh does this automatically. For this example, refinement levels for the ship between 4 and 5 have been choosen.</p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;"> refinementSurfaces
<span style="color: #008000;">&#123;</span>
    hull
    <span style="color: #008000;">&#123;</span>
         level <span style="color: #008000;">&#40;</span><span style="color: #0000dd;">4</span> <span style="color: #0000dd;">5</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
resolveFeatureAngle <span style="color: #0000dd;">60</span><span style="color: #008080;">;</span></pre></div></div>

<p>By tweaking the resolveFeatureAngle parameter, the areas between the surface refinement levels can be changed indirectly.</p>
<blockquote><p>Cells that &#8216;see&#8217; multiple intersections where the intersections make an angle &gt; resolveFeatureAngle get refined up to the maximum level. <cite>snappyHexMeshDict from motorBike tutorial</cite></p></blockquote>
<p>Things to keep in mind:</p>
<ul>
<li>The refinement level of the surface should be as high as the highes refinement of the adjoining volume mesh.</li>
<li>The surface mesh should be as homogeneous as possible. Large face size gradiens need to be avoided.</li>
</ul>
<p>Since we are trying to obtain a volume mesh, we need to specify the refinement for the in section 1 defined volume regions. For our setup, we can specify multiple types of refinements:</p>
<ol>
<li>Refinement normal to the surface of the geometry. Using this refinement, the mesh resolution near the geometry can be fine. Unfortunately this type of refinement may result in lots of fine cells in areas where we are not interested in, such as above the deck of the ship.</li>
<li>Refinement inside or outside of searchable objects. This type of refinement can be adjusted quite precisely to the special needs.</li>
</ol>
<p>For this example the volume around the hull is refined using the distance method and the waterlineBox, which has been defined previously, is refined inside that box. Regardless of the method or mode, the refinement levels are specified in the same manner. The first number is the distance from the particular surface and the second number specifies the level, that the enclosed volume is refined up to. It is possible and sometimes practical to define multiple steps of refinement, say a high refinement (level 5) up to one meter away from the hull and a coarser refinement (level 4)  up to 2 meters way from the hull. To achieve this, you have to nest the levels sorted from low distances to high distances.</p>
<p>The inside mode needs a distance as well, but since we want to refine the entire box, a quite high value for this distance can be choosen.</p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;"> refinementVolumes
<span style="color: #008000;">&#123;</span>
    hull
    <span style="color: #008000;">&#123;</span>
        mode distance<span style="color: #008080;">;</span>
        levels <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span><span style="color:#800080;">4.5</span> <span style="color: #0000dd;">4</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #666666;">//levels ((1 5)(2 4));   // Nested refinement</span>
    <span style="color: #008000;">&#125;</span>
    waterlineBox
    <span style="color: #008000;">&#123;</span>
        mode inside<span style="color: #008080;">;</span>
        levels <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span><span style="color:#800080;">1e4</span> <span style="color: #0000dd;">4</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span></pre></div></div>

<p>The usage of the locationInMesh parameter is pretty much self-explanatory, but that point must not be placed on a cell face of the background mesh and &#8211; of course &#8211; inside the mesh.</p>
<p>If snappyHexMesh has finished this meshing step, the refinements are more or less in place and all cells, that are inside the geometry and not inside the desired volume mesh, are removed. But not a single face has been snapped to the surface of the STL file. This happens in the next step</p>
<h2>2.3 snapControls</h2>
<p>Again, the snap controls are pretty much self explanatory, if you&#8217;ve read the tutorial provided by OpenFOAM</p>
<h1>3. Survey the result</h1>
<p>After having executed snappyHexMesh on a proper background mesh, you obtain up to three time step folders in your case. If you have three, snappyHexMesh has created a prismatic boundary layer on some of the surfaces. This will be covered by an additional tutorial. Since you need to examine your mesh, you should run checkMesh. If you are tweaking some parameters, you should send the output of checkMesh through a pipe into a file. After that run, change the parameters and run snappyHexMesh + checkMesh again, but save the checkMesh output into a different file. Now you can do a diff to figure out the differences.</p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;">snappyHexMesh
checkMesh <span style="color: #000040;">-</span>latestTime <span style="color: #000080;">&gt;</span> run1
&nbsp;
snappyHexMesh
checkMesh <span style="color: #000040;">-</span>latestTime <span style="color: #000080;">&gt;</span> run2
diff run1 run2</pre></div></div>

<p>Furtheron the mesh needs to be analyzed in paraFoam, especially the surface of the hull and the region close to that surface.</p>
<p>[1] OpenFOAM User&#8217;s Guide v.1.5</p>
 <div class='series_links'><a href='http://www.hydroniumion.de/general/snappyhexmesh-tutorial/' title='snappyHexMesh Tutorial'>Previous in series</a> <a href='http://www.hydroniumion.de/openfoam/snap-edges-with-snappyhexmesh/' title='Snap edges with snappyHexMesh'>Next in series</a></div>]]></content:encoded>
			<wfw:commentRss>http://www.hydroniumion.de/studium/snappyhexmesh-tutorial-part-2/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Kleiner Tag in Big Bay</title>
		<link>http://www.hydroniumion.de/general/kleiner-tag-in-big-bay/</link>
		<comments>http://www.hydroniumion.de/general/kleiner-tag-in-big-bay/#comments</comments>
		<pubDate>Sun, 29 Nov 2009 21:58:32 +0000</pubDate>
		<dc:creator>Jan</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Travel]]></category>
		<category><![CDATA[Windsurfing]]></category>
		<category><![CDATA[Kapstadt]]></category>

		<guid isPermaLink="false">http://www.hydroniumion.de/?p=246</guid>
		<description><![CDATA[Der heutige Tag startete mit der ersten Karte meines Adventskalenders Vormittags haben wir uns die windfreie Zeit im Canal Walk (vergleichbar mit dem CentrO) mit shoppen vertrieben. Danach hatten wir eine super Session in Big Bay! Wind fürs 4.7 und kleine Welle &#8211; super für&#8217;n Jan zum Üben! Völlig ausgehungert haben wir dann einen mexikanisches [...]]]></description>
			<content:encoded><![CDATA[<p>Der heutige Tag startete mit der ersten Karte meines Adventskalenders <img src='http://www.hydroniumion.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
Vormittags haben wir uns die windfreie Zeit im Canal Walk (vergleichbar mit dem CentrO) mit shoppen vertrieben. Danach hatten wir eine super Session in Big Bay! Wind fürs 4.7 und kleine Welle &#8211; super für&#8217;n Jan zum Üben!</p>
<p>Völlig ausgehungert haben wir dann einen mexikanisches Restaurant überfallen und vorzüglich gespeist. Den krönenden Abschluss haben wir uns bei sternenklarem Himmel mit einer dicken Portion Schoko-Mint-Eis im Jacuzzi gegeben &#8211; ja, es könnte uns schlechter gehen&#8230; oder: geiler Tag!!</p>
<p>Da in der letzten Woche zweimal genau an unserem Parkplatz ein Auto aufgebrochen wurde, nehmen wir die Kamera nicht mit zum Strand. Deshalb gibt es leider noch keine Surfbilder<br />
 <img src='http://www.hydroniumion.de/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.hydroniumion.de/general/kleiner-tag-in-big-bay/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Sharks@False Bay; kleine Cape-Tour</title>
		<link>http://www.hydroniumion.de/general/sharksfalse-bay-kleine-cape-tour/</link>
		<comments>http://www.hydroniumion.de/general/sharksfalse-bay-kleine-cape-tour/#comments</comments>
		<pubDate>Sat, 28 Nov 2009 21:37:00 +0000</pubDate>
		<dc:creator>Jan</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Travel]]></category>
		<category><![CDATA[Windsurfing]]></category>
		<category><![CDATA[Kapstadt]]></category>

		<guid isPermaLink="false">http://www.hydroniumion.de/?p=241</guid>
		<description><![CDATA[Nachdem der Swell leider nicht zum Wellenreiten reichte, sind wir heute nach Muizenberg in der False Bay gefahren. Danach ging es über Simon&#8217;s Town, Scarborough, über den Chapman&#8217;s Peak Drive, Clifton, vorbei am neuen World-Cup Stadion zurück nach Table View. In Muizenberg angekommen erinnerte uns prompt eine weiße Flagge mit schwarzem Hai daran, warum unsere [...]]]></description>
			<content:encoded><![CDATA[<p>Nachdem der Swell leider nicht zum Wellenreiten reichte, sind wir heute nach Muizenberg in der False Bay gefahren. Danach ging es über Simon&#8217;s Town, Scarborough, über den Chapman&#8217;s Peak Drive, Clifton, vorbei am neuen World-Cup Stadion zurück nach Table View.<br />
In Muizenberg angekommen erinnerte uns prompt eine weiße Flagge mit schwarzem Hai daran, warum unsere Wellenreiter in Table View geblieben waren. (weiße Flagge mit schwarzem Hai = Shark-Spotter haben Haie in der Bucht gesehen) Ansonsten gab es auf dieser Tour coole Surf-Läden und Bars, tolle Strände und viele imposante Ausblicke.</p>
<p>So sieht&#8217;s bei uns einen Tag vor dem ersten Advent aus:
<a href='http://www.hydroniumion.de/general/sharksfalse-bay-kleine-cape-tour/attachment/img_2387/' title='img_2387'><img width="150" height="150" src="http://www.hydroniumion.de/wp-content/uploads/img_2387-150x150.jpg" class="attachment-thumbnail" alt="img_2387" title="img_2387" /></a>
<a href='http://www.hydroniumion.de/general/sharksfalse-bay-kleine-cape-tour/attachment/img_2390/' title='img_2390'><img width="150" height="150" src="http://www.hydroniumion.de/wp-content/uploads/img_2390-150x150.jpg" class="attachment-thumbnail" alt="img_2390" title="img_2390" /></a>
<a href='http://www.hydroniumion.de/general/sharksfalse-bay-kleine-cape-tour/attachment/img_2391/' title='img_2391'><img width="150" height="150" src="http://www.hydroniumion.de/wp-content/uploads/img_2391-150x150.jpg" class="attachment-thumbnail" alt="img_2391" title="img_2391" /></a>
<a href='http://www.hydroniumion.de/general/sharksfalse-bay-kleine-cape-tour/attachment/img_2392/' title='img_2392'><img width="150" height="150" src="http://www.hydroniumion.de/wp-content/uploads/img_2392-150x150.jpg" class="attachment-thumbnail" alt="img_2392" title="img_2392" /></a>
<a href='http://www.hydroniumion.de/general/sharksfalse-bay-kleine-cape-tour/attachment/img_2400/' title='img_2400'><img width="150" height="150" src="http://www.hydroniumion.de/wp-content/uploads/img_2400-150x150.jpg" class="attachment-thumbnail" alt="img_2400" title="img_2400" /></a>
<a href='http://www.hydroniumion.de/general/sharksfalse-bay-kleine-cape-tour/attachment/img_2405/' title='img_2405'><img width="150" height="150" src="http://www.hydroniumion.de/wp-content/uploads/img_2405-150x150.jpg" class="attachment-thumbnail" alt="img_2405" title="img_2405" /></a>
<a href='http://www.hydroniumion.de/general/sharksfalse-bay-kleine-cape-tour/attachment/img_2409/' title='img_2409'><img width="150" height="150" src="http://www.hydroniumion.de/wp-content/uploads/img_2409-150x150.jpg" class="attachment-thumbnail" alt="img_2409" title="img_2409" /></a>
<a href='http://www.hydroniumion.de/general/sharksfalse-bay-kleine-cape-tour/attachment/img_2416/' title='img_2416'><img width="150" height="150" src="http://www.hydroniumion.de/wp-content/uploads/img_2416-150x150.jpg" class="attachment-thumbnail" alt="img_2416" title="img_2416" /></a>
<a href='http://www.hydroniumion.de/general/sharksfalse-bay-kleine-cape-tour/attachment/img_2420/' title='img_2420'><img width="150" height="150" src="http://www.hydroniumion.de/wp-content/uploads/img_2420-150x150.jpg" class="attachment-thumbnail" alt="img_2420" title="img_2420" /></a>
<a href='http://www.hydroniumion.de/general/sharksfalse-bay-kleine-cape-tour/attachment/img_2426/' title='img_2426'><img width="150" height="150" src="http://www.hydroniumion.de/wp-content/uploads/img_2426-150x150.jpg" class="attachment-thumbnail" alt="img_2426" title="img_2426" /></a>
<a href='http://www.hydroniumion.de/general/sharksfalse-bay-kleine-cape-tour/attachment/img_2428/' title='img_2428'><img width="150" height="150" src="http://www.hydroniumion.de/wp-content/uploads/img_2428-150x150.jpg" class="attachment-thumbnail" alt="img_2428" title="img_2428" /></a>
<a href='http://www.hydroniumion.de/general/sharksfalse-bay-kleine-cape-tour/attachment/img_2429/' title='img_2429'><img width="150" height="150" src="http://www.hydroniumion.de/wp-content/uploads/img_2429-150x150.jpg" class="attachment-thumbnail" alt="img_2429" title="img_2429" /></a>
<a href='http://www.hydroniumion.de/general/sharksfalse-bay-kleine-cape-tour/attachment/img_2431/' title='img_2431'><img width="150" height="150" src="http://www.hydroniumion.de/wp-content/uploads/img_2431-150x150.jpg" class="attachment-thumbnail" alt="img_2431" title="img_2431" /></a>
<a href='http://www.hydroniumion.de/general/sharksfalse-bay-kleine-cape-tour/attachment/img_2460/' title='img_2460'><img width="150" height="150" src="http://www.hydroniumion.de/wp-content/uploads/img_2460-150x150.jpg" class="attachment-thumbnail" alt="img_2460" title="img_2460" /></a>
<a href='http://www.hydroniumion.de/general/sharksfalse-bay-kleine-cape-tour/attachment/img_2462/' title='img_2462'><img width="150" height="150" src="http://www.hydroniumion.de/wp-content/uploads/img_2462-150x150.jpg" class="attachment-thumbnail" alt="img_2462" title="img_2462" /></a>
<a href='http://www.hydroniumion.de/general/sharksfalse-bay-kleine-cape-tour/attachment/img_2486/' title='img_2486'><img width="150" height="150" src="http://www.hydroniumion.de/wp-content/uploads/img_2486-150x150.jpg" class="attachment-thumbnail" alt="img_2486" title="img_2486" /></a>
<a href='http://www.hydroniumion.de/general/sharksfalse-bay-kleine-cape-tour/attachment/img_2506/' title='img_2506'><img width="150" height="150" src="http://www.hydroniumion.de/wp-content/uploads/img_2506-150x150.jpg" class="attachment-thumbnail" alt="img_2506" title="img_2506" /></a>
<a href='http://www.hydroniumion.de/general/sharksfalse-bay-kleine-cape-tour/attachment/img_2510/' title='img_2510'><img width="150" height="150" src="http://www.hydroniumion.de/wp-content/uploads/img_2510-150x150.jpg" class="attachment-thumbnail" alt="img_2510" title="img_2510" /></a>
<a href='http://www.hydroniumion.de/general/sharksfalse-bay-kleine-cape-tour/attachment/img_2512/' title='img_2512'><img width="150" height="150" src="http://www.hydroniumion.de/wp-content/uploads/img_2512-150x150.jpg" class="attachment-thumbnail" alt="img_2512" title="img_2512" /></a>
<a href='http://www.hydroniumion.de/general/sharksfalse-bay-kleine-cape-tour/attachment/img_2513/' title='img_2513'><img width="150" height="150" src="http://www.hydroniumion.de/wp-content/uploads/img_2513-150x150.jpg" class="attachment-thumbnail" alt="img_2513" title="img_2513" /></a>
<a href='http://www.hydroniumion.de/general/sharksfalse-bay-kleine-cape-tour/attachment/img_2521/' title='img_2521'><img width="150" height="150" src="http://www.hydroniumion.de/wp-content/uploads/img_2521-150x150.jpg" class="attachment-thumbnail" alt="img_2521" title="img_2521" /></a>
<a href='http://www.hydroniumion.de/general/sharksfalse-bay-kleine-cape-tour/attachment/img_2534/' title='img_2534'><img width="150" height="150" src="http://www.hydroniumion.de/wp-content/uploads/img_2534-150x150.jpg" class="attachment-thumbnail" alt="img_2534" title="img_2534" /></a>
<a href='http://www.hydroniumion.de/general/sharksfalse-bay-kleine-cape-tour/attachment/img_2535/' title='img_2535'><img width="150" height="150" src="http://www.hydroniumion.de/wp-content/uploads/img_2535-150x150.jpg" class="attachment-thumbnail" alt="img_2535" title="img_2535" /></a>
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hydroniumion.de/general/sharksfalse-bay-kleine-cape-tour/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

