summaryrefslogtreecommitdiffstats
path: root/Smoke/README.html
diff options
context:
space:
mode:
authorOliver Schinagl <oliver@schinagl.nl>2007-09-19 13:27:29 (GMT)
committerOliver Schinagl <oliver@schinagl.nl>2007-09-19 13:27:29 (GMT)
commit353c37683e2708a1e4c23adddb7d706354947c2d (patch)
tree653f8f4338eb2eba7405b60eb57ca4f5e8a118f4 /Smoke/README.html
download2iv35-353c37683e2708a1e4c23adddb7d706354947c2d.zip
2iv35-353c37683e2708a1e4c23adddb7d706354947c2d.tar.gz
2iv35-353c37683e2708a1e4c23adddb7d706354947c2d.tar.bz2
Initial import of Smoke application
Diffstat (limited to 'Smoke/README.html')
-rw-r--r--Smoke/README.html1004
1 files changed, 1004 insertions, 0 deletions
diff --git a/Smoke/README.html b/Smoke/README.html
new file mode 100644
index 0000000..e222cb7
--- /dev/null
+++ b/Smoke/README.html
@@ -0,0 +1,1004 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!-- saved from url=(0046)http://www.win.tue.nl/~alext/COURSES/INFO_VIS/ -->
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:w="urn:schemas-microsoft-com:office:word"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=Word.Document>
+<meta name=Generator content="Microsoft Word 10">
+<meta name=Originator content="Microsoft Word 10">
+<link rel=File-List href="README_files/filelist.xml">
+<link rel=Edit-Time-Data href="README_files/editdata.mso">
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+w\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+</style>
+<![endif]-->
+<title>Visualization Course – What is in this directory</title>
+<!--[if gte mso 9]><xml>
+ <o:DocumentProperties>
+ <o:Author>ATelea</o:Author>
+ <o:LastAuthor>MK</o:LastAuthor>
+ <o:Revision>32</o:Revision>
+ <o:TotalTime>150</o:TotalTime>
+ <o:Created>2005-12-02T13:22:00Z</o:Created>
+ <o:LastSaved>2007-09-11T17:39:00Z</o:LastSaved>
+ <o:Pages>1</o:Pages>
+ <o:Words>1128</o:Words>
+ <o:Characters>6435</o:Characters>
+ <o:Company>TU Eindhoven</o:Company>
+ <o:Lines>53</o:Lines>
+ <o:Paragraphs>15</o:Paragraphs>
+ <o:CharactersWithSpaces>7548</o:CharactersWithSpaces>
+ <o:Version>10.6830</o:Version>
+ </o:DocumentProperties>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:WordDocument>
+ <w:SpellingState>Clean</w:SpellingState>
+ <w:GrammarState>Clean</w:GrammarState>
+ <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
+ </w:WordDocument>
+</xml><![endif]-->
+<style>
+<!--
+ /* Font Definitions */
+ @font-face
+ {font-family:Wingdings;
+ panose-1:5 0 0 0 0 0 0 0 0 0;
+ mso-font-charset:2;
+ mso-generic-font-family:auto;
+ mso-font-pitch:variable;
+ mso-font-signature:0 268435456 0 0 -2147483648 0;}
+ /* Style Definitions */
+ p.MsoNormal, li.MsoNormal, div.MsoNormal
+ {mso-style-parent:"";
+ margin:0pt;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:12.0pt;
+ font-family:"Times New Roman";
+ mso-fareast-font-family:"Times New Roman";}
+h1
+ {mso-style-next:Normal;
+ margin:0pt;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ mso-outline-level:1;
+ font-size:18.0pt;
+ mso-bidi-font-size:12.0pt;
+ font-family:Arial;
+ color:blue;
+ mso-font-kerning:0pt;
+ font-weight:normal;}
+a:link, span.MsoHyperlink
+ {color:blue;
+ text-decoration:underline;
+ text-underline:single;}
+a:visited, span.MsoHyperlinkFollowed
+ {color:purple;
+ text-decoration:underline;
+ text-underline:single;}
+span.SpellE
+ {mso-style-name:"";
+ mso-spl-e:yes;}
+span.GramE
+ {mso-style-name:"";
+ mso-gram-e:yes;}
+@page Section1
+ {size:595.3pt 841.9pt;
+ margin:72.0pt 90.0pt 72.0pt 90.0pt;
+ mso-header-margin:35.4pt;
+ mso-footer-margin:35.4pt;
+ mso-paper-source:0;}
+div.Section1
+ {page:Section1;}
+ /* List Definitions */
+ @list l0
+ {mso-list-id:92438320;
+ mso-list-type:hybrid;
+ mso-list-template-ids:1363569478 1265507632 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
+@list l0:level1
+ {mso-level-number-format:bullet;
+ mso-level-text:\F0B7;
+ mso-level-tab-stop:32.2pt;
+ mso-level-number-position:left;
+ margin-left:32.2pt;
+ text-indent:-18.0pt;
+ font-family:Symbol;}
+@list l0:level2
+ {mso-level-tab-stop:72.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l0:level3
+ {mso-level-tab-stop:108.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l0:level4
+ {mso-level-tab-stop:144.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l0:level5
+ {mso-level-tab-stop:180.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l0:level6
+ {mso-level-tab-stop:216.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l0:level7
+ {mso-level-tab-stop:252.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l0:level8
+ {mso-level-tab-stop:288.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l0:level9
+ {mso-level-tab-stop:324.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l1
+ {mso-list-id:323976523;
+ mso-list-type:hybrid;
+ mso-list-template-ids:-752812478 1265507632 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
+@list l1:level1
+ {mso-level-number-format:bullet;
+ mso-level-text:\F0B7;
+ mso-level-tab-stop:32.2pt;
+ mso-level-number-position:left;
+ margin-left:32.2pt;
+ text-indent:-18.0pt;
+ font-family:Symbol;}
+@list l1:level2
+ {mso-level-tab-stop:72.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l1:level3
+ {mso-level-tab-stop:108.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l1:level4
+ {mso-level-tab-stop:144.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l1:level5
+ {mso-level-tab-stop:180.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l1:level6
+ {mso-level-tab-stop:216.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l1:level7
+ {mso-level-tab-stop:252.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l1:level8
+ {mso-level-tab-stop:288.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l1:level9
+ {mso-level-tab-stop:324.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l2
+ {mso-list-id:447353460;
+ mso-list-type:hybrid;
+ mso-list-template-ids:539260506 1265507632 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
+@list l2:level1
+ {mso-level-number-format:bullet;
+ mso-level-text:\F0B7;
+ mso-level-tab-stop:32.2pt;
+ mso-level-number-position:left;
+ margin-left:32.2pt;
+ text-indent:-18.0pt;
+ font-family:Symbol;}
+@list l2:level2
+ {mso-level-tab-stop:72.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l2:level3
+ {mso-level-tab-stop:108.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l2:level4
+ {mso-level-tab-stop:144.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l2:level5
+ {mso-level-tab-stop:180.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l2:level6
+ {mso-level-tab-stop:216.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l2:level7
+ {mso-level-tab-stop:252.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l2:level8
+ {mso-level-tab-stop:288.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l2:level9
+ {mso-level-tab-stop:324.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l3
+ {mso-list-id:505559110;
+ mso-list-type:hybrid;
+ mso-list-template-ids:1184550384 1265507632 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
+@list l3:level1
+ {mso-level-number-format:bullet;
+ mso-level-text:\F0B7;
+ mso-level-tab-stop:32.2pt;
+ mso-level-number-position:left;
+ margin-left:32.2pt;
+ text-indent:-18.0pt;
+ font-family:Symbol;}
+@list l3:level2
+ {mso-level-number-format:bullet;
+ mso-level-text:o;
+ mso-level-tab-stop:72.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;
+ font-family:"Courier New";}
+@list l3:level3
+ {mso-level-number-format:bullet;
+ mso-level-text:\F0A7;
+ mso-level-tab-stop:108.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;
+ font-family:Wingdings;}
+@list l3:level4
+ {mso-level-tab-stop:144.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l3:level5
+ {mso-level-tab-stop:180.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l3:level6
+ {mso-level-tab-stop:216.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l3:level7
+ {mso-level-tab-stop:252.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l3:level8
+ {mso-level-tab-stop:288.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l3:level9
+ {mso-level-tab-stop:324.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l4
+ {mso-list-id:1331177106;
+ mso-list-type:hybrid;
+ mso-list-template-ids:-969107164 1265507632 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
+@list l4:level1
+ {mso-level-number-format:bullet;
+ mso-level-text:\F0B7;
+ mso-level-tab-stop:32.2pt;
+ mso-level-number-position:left;
+ margin-left:32.2pt;
+ text-indent:-18.0pt;
+ font-family:Symbol;}
+@list l4:level2
+ {mso-level-tab-stop:72.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l4:level3
+ {mso-level-tab-stop:108.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l4:level4
+ {mso-level-tab-stop:144.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l4:level5
+ {mso-level-tab-stop:180.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l4:level6
+ {mso-level-tab-stop:216.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l4:level7
+ {mso-level-tab-stop:252.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l4:level8
+ {mso-level-tab-stop:288.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l4:level9
+ {mso-level-tab-stop:324.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l5
+ {mso-list-id:1935019449;
+ mso-list-type:hybrid;
+ mso-list-template-ids:1773670054 1265507632 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
+@list l5:level1
+ {mso-level-number-format:bullet;
+ mso-level-text:\F0B7;
+ mso-level-tab-stop:32.2pt;
+ mso-level-number-position:left;
+ margin-left:32.2pt;
+ text-indent:-18.0pt;
+ font-family:Symbol;}
+@list l5:level2
+ {mso-level-tab-stop:72.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l5:level3
+ {mso-level-tab-stop:108.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l5:level4
+ {mso-level-tab-stop:144.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l5:level5
+ {mso-level-tab-stop:180.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l5:level6
+ {mso-level-tab-stop:216.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l5:level7
+ {mso-level-tab-stop:252.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l5:level8
+ {mso-level-tab-stop:288.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l5:level9
+ {mso-level-tab-stop:324.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l6
+ {mso-list-id:2119524529;
+ mso-list-type:hybrid;
+ mso-list-template-ids:1421618172 1265507632 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
+@list l6:level1
+ {mso-level-number-format:bullet;
+ mso-level-text:\F0B7;
+ mso-level-tab-stop:32.2pt;
+ mso-level-number-position:left;
+ margin-left:32.2pt;
+ text-indent:-18.0pt;
+ font-family:Symbol;}
+@list l6:level2
+ {mso-level-tab-stop:72.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l6:level3
+ {mso-level-tab-stop:108.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l6:level4
+ {mso-level-tab-stop:144.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l6:level5
+ {mso-level-tab-stop:180.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l6:level6
+ {mso-level-tab-stop:216.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l6:level7
+ {mso-level-tab-stop:252.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l6:level8
+ {mso-level-tab-stop:288.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l6:level9
+ {mso-level-tab-stop:324.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+ol
+ {margin-bottom:0pt;}
+ul
+ {margin-bottom:0pt;}
+-->
+</style>
+<!--[if gte mso 10]>
+<style>
+ /* Style Definitions */
+ table.MsoNormalTable
+ {mso-style-name:"Table Normal";
+ mso-tstyle-rowband-size:0;
+ mso-tstyle-colband-size:0;
+ mso-style-noshow:yes;
+ mso-style-parent:"";
+ mso-padding-alt:0pt 5.4pt 0pt 5.4pt;
+ mso-para-margin:0pt;
+ mso-para-margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:10.0pt;
+ font-family:"Times New Roman";}
+</style>
+<![endif]--><!--[if gte mso 9]><xml>
+ <o:shapedefaults v:ext="edit" spidmax="4098"/>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="1"/>
+ </o:shapelayout></xml><![endif]-->
+</head>
+
+<body lang=EN-US link=blue vlink=purple style='tab-interval:36.0pt'>
+
+<div class=Section1>
+
+<h1><span lang=EN-GB style='mso-ansi-language:EN-GB'>Real-Time Smoke Simulation
+and Visualization<o:p></o:p></span></h1>
+
+<p class=MsoNormal><span lang=EN-GB style='font-size:18.0pt;mso-bidi-font-size:
+12.0pt;font-family:Arial;color:blue;mso-ansi-language:EN-GB'>&nbsp;&nbsp;<o:p></o:p></span></p>
+
+<p class=MsoNormal><span lang=EN-GB style='font-size:14.0pt;mso-bidi-font-size:
+12.0pt;font-family:Arial;mso-ansi-language:EN-GB'>1. Introduction<o:p></o:p></span></p>
+
+<p class=MsoNormal><span lang=EN-GB style='font-size:14.0pt;mso-bidi-font-size:
+12.0pt;font-family:Arial;mso-ansi-language:EN-GB'><br>
+</span><span lang=EN-GB style='mso-ansi-language:EN-GB'>This directory contains
+the code for the Real-Time Smoke Simulation and Visualization assignment. The
+code contains a real-time simulation of matter which flows under the influence of
+a user-controlled force field. The simulation follows the <span class=SpellE>Navier</span>-Stokes
+equations for fluid flow. This document describes briefly how to compile the
+code and the structure of the main program. This is not intended as an in-depth
+description of how to write or compile programs in C or another programming
+language, OpenGL, event-based programming, or how to build a real-time fluid
+simulation engine. However, starting here, you should be able to compile the
+code and add visualization features to the provided skeleton application.<o:p></o:p></span></p>
+
+<p class=MsoNormal><span lang=EN-GB style='font-size:14.0pt;mso-bidi-font-size:
+12.0pt;font-family:Arial;mso-ansi-language:EN-GB'>&nbsp;<o:p></o:p></span></p>
+
+<p class=MsoNormal><span lang=EN-GB style='font-size:14.0pt;mso-bidi-font-size:
+12.0pt;font-family:Arial;mso-ansi-language:EN-GB'>2. Structure of the code:<o:p></o:p></span></p>
+
+<p class=MsoNormal><span lang=EN-GB style='font-size:14.0pt;mso-bidi-font-size:
+12.0pt;font-family:Arial;mso-ansi-language:EN-GB'>&nbsp;<o:p></o:p></span></p>
+
+<p class=MsoNormal><span lang=EN-GB style='mso-ansi-language:EN-GB'>The
+provided software consists of three main parts: <o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-left:32.2pt;text-indent:-18.0pt;mso-list:l1 level1 lfo2;
+tab-stops:list 32.2pt'><![if !supportLists]><span lang=EN-GB style='font-size:
+14.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
+Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:EN-GB'><span
+style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><span dir=LTR><span class=GramE><span
+lang=EN-GB style='mso-ansi-language:EN-GB'>a</span></span></span><span
+lang=EN-GB style='mso-ansi-language:EN-GB'> <i>mathematical library</i>, called
+FFTW (standing for Fastest Fourier Transform in the West), is used to provide
+the numerical engine that simulates a fluid flow in two dimensions.</span><span
+lang=EN-GB style='font-size:14.0pt;mso-bidi-font-size:12.0pt;font-family:Arial;
+mso-ansi-language:EN-GB'><o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-left:32.2pt;text-indent:-18.0pt;mso-list:l1 level1 lfo2;
+tab-stops:list 32.2pt'><![if !supportLists]><span lang=EN-GB style='font-size:
+14.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
+Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:EN-GB'><span
+style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><span dir=LTR><span class=GramE><span
+lang=EN-GB style='mso-ansi-language:EN-GB'>the</span></span></span><span
+lang=EN-GB style='mso-ansi-language:EN-GB'> <i>GLUT library</i> (GL Utility
+Toolkit), used to provide simple OpenGL graphics, mouse, and keyboard support
+to the application.</span><span lang=EN-GB style='font-size:14.0pt;mso-bidi-font-size:
+12.0pt;font-family:Arial;mso-ansi-language:EN-GB'><o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-left:32.2pt;text-indent:-18.0pt;mso-list:l1 level1 lfo2;
+tab-stops:list 32.2pt'><![if !supportLists]><span lang=EN-GB style='font-size:
+14.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
+Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:EN-GB'><span
+style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><span dir=LTR><span class=GramE><span
+lang=EN-GB style='mso-ansi-language:EN-GB'>a</span></span></span><span
+lang=EN-GB style='mso-ansi-language:EN-GB'> very simple <i>application skeleton
+</i>which shows how to call the FFTW simulation code, steer it interactively
+using the mouse, and do some basic visualization and graphics, using GLUT.</span><span
+lang=EN-GB style='font-size:14.0pt;mso-bidi-font-size:12.0pt;font-family:Arial;
+mso-ansi-language:EN-GB'><o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-left:14.2pt'><span lang=EN-GB
+style='mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span></p>
+
+<p class=MsoNormal><span lang=EN-GB style='mso-ansi-language:EN-GB'>All the
+code is written in the C programming language. Although it helps if you
+understand C, you should be able to rewrite the application skeleton to use the
+FFTW library from the programming language of your choice (e.g. Java, Python)<o:p></o:p></span></p>
+
+<p class=MsoNormal><span lang=EN-GB style='mso-ansi-language:EN-GB'>The
+provided code is structured in the following main components (files and folders):<o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-left:32.2pt;text-indent:-18.0pt;mso-list:l5 level1 lfo4;
+tab-stops:list 32.2pt'><![if !supportLists]><span lang=EN-GB style='font-size:
+14.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
+Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:EN-GB'><span
+style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><span dir=LTR><span lang=EN-GB style='mso-ansi-language:
+EN-GB'>fftw-2.1.3:<span style='mso-tab-count:1'>         </span>Contains the
+sources of the FFTW library</span></span><span lang=EN-GB style='font-size:
+14.0pt;mso-bidi-font-size:12.0pt;font-family:Arial;mso-ansi-language:EN-GB'><o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-left:32.2pt;text-indent:-18.0pt;mso-list:l5 level1 lfo4;
+tab-stops:list 32.2pt'><![if !supportLists]><span lang=EN-GB style='font-size:
+14.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
+Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:EN-GB'><span
+style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><span dir=LTR><span class=SpellE><span
+lang=EN-GB style='mso-ansi-language:EN-GB'>fluids.c</span></span></span><span
+lang=EN-GB style='mso-ansi-language:EN-GB'>: <span style='mso-tab-count:2'>             </span>The
+application skeleton which calls the FFTW library</span><span lang=EN-GB
+style='font-size:14.0pt;mso-bidi-font-size:12.0pt;font-family:Arial;mso-ansi-language:
+EN-GB'><o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-left:32.2pt;text-indent:-18.0pt;mso-list:l5 level1 lfo4;
+tab-stops:list 32.2pt'><![if !supportLists]><span lang=EN-GB style='font-size:
+14.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
+Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:EN-GB'><span
+style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><span dir=LTR><span lang=EN-GB style='mso-ansi-language:
+EN-GB'>GLUT:<span style='mso-tab-count:2'>               </span>Contains the
+GLUT (GL Utility Toolkit) library</span></span><span lang=EN-GB
+style='font-size:14.0pt;mso-bidi-font-size:12.0pt;font-family:Arial;mso-ansi-language:
+EN-GB'><o:p></o:p></span></p>
+
+<p class=MsoNormal><span lang=EN-GB style='font-size:14.0pt;mso-bidi-font-size:
+12.0pt;font-family:Arial;mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span></p>
+
+<p class=MsoNormal><span lang=EN-GB style='mso-ansi-language:EN-GB'>There are
+some other less important files and folders. These will be described in the
+building instructions below.</span><span lang=EN-GB style='font-size:14.0pt;
+mso-bidi-font-size:12.0pt;font-family:Arial;mso-ansi-language:EN-GB'><o:p></o:p></span></p>
+
+<p class=MsoNormal><span lang=EN-GB style='font-size:14.0pt;mso-bidi-font-size:
+12.0pt;font-family:Arial;mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span></p>
+
+<p class=MsoNormal><span lang=EN-GB style='font-size:14.0pt;mso-bidi-font-size:
+12.0pt;font-family:Arial;mso-ansi-language:EN-GB'>3. Building the code<o:p></o:p></span></p>
+
+<p class=MsoNormal><span lang=EN-GB style='font-size:14.0pt;mso-bidi-font-size:
+12.0pt;font-family:Arial;mso-ansi-language:EN-GB'>&nbsp;<o:p></o:p></span></p>
+
+<p class=MsoNormal><span lang=EN-GB style='mso-ansi-language:EN-GB'>Let us
+first assume you have a C compiler installed (e.g. Microsoft Visual C++ Express
+Edition, or GNU <span class=SpellE>gcc</span>, both which are freely
+available). To build the application, you have to compile all C files in <b>fftw-2.1.3/fftw</b>,
+<b>fftw-2.1.3/rfftw</b>, and <span class=SpellE><b>fluids.c</b></span> in a
+single executable, and link with the <b>GLUT/glut32.lib</b>.<o:p></o:p></span></p>
+
+<p class=MsoNormal><span lang=EN-GB style='mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span></p>
+
+<p class=MsoNormal><span lang=EN-GB style='mso-ansi-language:EN-GB'>If you have
+the Microsoft Visual C++ compiler, you can compile by simply opening the <span
+class=SpellE><b>Smoke.sln</b></span> solution file and building it – either in <span
+class=GramE>debug</span> or release mode.<o:p></o:p></span></p>
+
+<p class=MsoNormal><span lang=EN-GB style='mso-ansi-language:EN-GB'>The
+following directories contain Visual C++ project-related files:<o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-left:32.2pt;text-indent:-18.0pt;mso-list:l4 level1 lfo6;
+tab-stops:list 32.2pt'><![if !supportLists]><span lang=EN-GB style='font-family:
+Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:
+EN-GB'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><span dir=LTR><span lang=EN-GB style='mso-ansi-language:
+EN-GB'>FFTW:<span style='mso-tab-count:2'>              </span>Contains the
+project for building the FFTW library<o:p></o:p></span></span></p>
+
+<p class=MsoNormal style='margin-left:32.2pt;text-indent:-18.0pt;mso-list:l4 level1 lfo6;
+tab-stops:list 32.2pt'><![if !supportLists]><span lang=EN-GB style='font-family:
+Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:
+EN-GB'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><span dir=LTR><span lang=EN-GB style='mso-ansi-language:
+EN-GB'>Smoke: <span style='mso-tab-count:2'>             </span>Contains the
+project for building the complete application<o:p></o:p></span></span></p>
+
+<p class=MsoNormal style='margin-left:32.2pt;text-indent:-18.0pt;mso-list:l4 level1 lfo6;
+tab-stops:list 32.2pt'><![if !supportLists]><span lang=EN-GB style='font-family:
+Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:
+EN-GB'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><span dir=LTR><span class=GramE><span
+lang=EN-GB style='mso-ansi-language:EN-GB'>library</span></span></span><span
+lang=EN-GB style='mso-ansi-language:EN-GB'>:<span style='mso-tab-count:2'>               </span>Contains
+the FFTW static library <span class=SpellE>FFTW.lib</span> that the application
+is linked against.<br style='mso-special-character:line-break'>
+<![if !supportLineBreakNewLine]><br style='mso-special-character:line-break'>
+<![endif]><o:p></o:p></span></p>
+
+<p class=MsoNormal><span lang=EN-GB style='mso-ansi-language:EN-GB'>The final
+application, <b>Smoke.exe</b>, is created in the top-level directory. Note
+that, to run it, you must have the GLUT library <b>glut32.dll </b>in the same
+location as the executable. This library is provided with the code.<o:p></o:p></span></p>
+
+<p class=MsoNormal><span lang=EN-GB style='mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span></p>
+
+<p class=MsoNormal><span lang=EN-GB style='mso-ansi-language:EN-GB'>Of course,
+you can build the code using different C compilers.<o:p></o:p></span></p>
+
+<p class=MsoNormal><span lang=EN-GB style='font-size:14.0pt;mso-bidi-font-size:
+12.0pt;font-family:Arial;mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span></p>
+
+<p class=MsoNormal><span lang=EN-GB style='font-size:14.0pt;mso-bidi-font-size:
+12.0pt;font-family:Arial;mso-ansi-language:EN-GB'>4. Running the code<o:p></o:p></span></p>
+
+<p class=MsoNormal><span lang=EN-GB style='font-size:14.0pt;mso-bidi-font-size:
+12.0pt;font-family:Arial;mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span></p>
+
+<p class=MsoNormal><span lang=EN-GB style='mso-ansi-language:EN-GB'>Just run
+the <b>smoke.exe</b> application. You will get a text window showing some help
+messages and a graphic window. Select the graphic window. To control the
+simulation, click and drag the mouse. To change the visualization and/or
+simulation options, press use the indicated keys in the graphical window. After
+a bit of experimenting, you should be able to create some images like the ones
+shown below:<o:p></o:p></span></p>
+
+<p class=MsoNormal><span lang=EN-GB style='mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span></p>
+
+<p class=MsoNormal align=center style='text-align:center'><span lang=EN-GB
+style='font-size:14.0pt;mso-bidi-font-size:12.0pt;font-family:Arial;mso-ansi-language:
+EN-GB'><!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600"
+ o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f"
+ stroked="f">
+ <v:stroke joinstyle="miter"/>
+ <v:formulas>
+ <v:f eqn="if lineDrawn pixelLineWidth 0"/>
+ <v:f eqn="sum @0 1 0"/>
+ <v:f eqn="sum 0 0 @1"/>
+ <v:f eqn="prod @2 1 2"/>
+ <v:f eqn="prod @3 21600 pixelWidth"/>
+ <v:f eqn="prod @3 21600 pixelHeight"/>
+ <v:f eqn="sum @0 0 1"/>
+ <v:f eqn="prod @6 1 2"/>
+ <v:f eqn="prod @7 21600 pixelWidth"/>
+ <v:f eqn="sum @8 21600 0"/>
+ <v:f eqn="prod @7 21600 pixelHeight"/>
+ <v:f eqn="sum @10 21600 0"/>
+ </v:formulas>
+ <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
+ <o:lock v:ext="edit" aspectratio="t"/>
+</v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" style='width:225.75pt;
+ height:234pt'>
+ <v:imagedata src="README_files/image001.png" o:title=""/>
+</v:shape><![endif]--><![if !vml]><img width=301 height=312
+src="README_files/image002.jpg" border=0 v:shapes="_x0000_i1025"><![endif]><span
+style='mso-spacerun:yes'> </span><!--[if gte vml 1]><v:shape id="_x0000_i1026"
+ type="#_x0000_t75" style='width:226.5pt;height:234.75pt'>
+ <v:imagedata src="README_files/image003.png" o:title=""/>
+</v:shape><![endif]--><![if !vml]><img width=302 height=313
+src="README_files/image004.jpg" border=0 v:shapes="_x0000_i1026"><![endif]><span
+style='mso-spacerun:yes'> </span><!--[if gte vml 1]><v:shape id="_x0000_i1027"
+ type="#_x0000_t75" style='width:225pt;height:233.25pt'>
+ <v:imagedata src="README_files/image005.png" o:title=""/>
+</v:shape><![endif]--><![if !vml]><img width=300 height=311
+src="README_files/image006.jpg" border=0 v:shapes="_x0000_i1027"><![endif]><span
+style='mso-spacerun:yes'> </span><!--[if gte vml 1]><v:shape id="_x0000_i1028"
+ type="#_x0000_t75" style='width:225pt;height:233.25pt'>
+ <v:imagedata src="README_files/image007.png" o:title=""/>
+</v:shape><![endif]--><![if !vml]><img width=300 height=311
+src="README_files/image008.jpg" border=0 v:shapes="_x0000_i1028"><![endif]></span><span
+lang=EN-GB style='mso-ansi-language:EN-GB'><o:p></o:p></span></p>
+
+<p class=MsoNormal><span lang=EN-GB style='font-size:14.0pt;mso-bidi-font-size:
+12.0pt;font-family:Arial;mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span></p>
+
+<p class=MsoNormal><span lang=EN-GB style='font-size:14.0pt;mso-bidi-font-size:
+12.0pt;font-family:Arial;mso-ansi-language:EN-GB'>5. The application <o:p></o:p></span></p>
+
+<p class=MsoNormal><span lang=EN-GB style='font-size:14.0pt;mso-bidi-font-size:
+12.0pt;font-family:Arial;mso-ansi-language:EN-GB'>&nbsp;<o:p></o:p></span></p>
+
+<p class=MsoNormal><span lang=EN-GB style='mso-ansi-language:EN-GB'>The main
+application is a single file, <span class=SpellE><b>fluids.c</b></span>. The
+structure of this file is described briefly below. See also the comments
+embedded in the source code. The purpose of these explanations is to help you
+understanding how you can start modifying the code, to add new visual
+functionality to it, or how you can start porting the code, if you want to
+write your assignment in a different programming language than C or C++.<o:p></o:p></span></p>
+
+<p class=MsoNormal><span lang=EN-GB style='mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span></p>
+
+<p class=MsoNormal><span lang=EN-GB style='mso-ansi-language:EN-GB'>As a
+general note: Do not worry too much if you do not understand the numerical
+code. This is not the purpose of the assignment. You can use that code as a
+simulation ‘black-box’. The purpose is to focus on building new visualization
+methods atop of that simulation code.<o:p></o:p></span></p>
+
+<p class=MsoNormal><span lang=EN-GB style='mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span></p>
+
+<p class=MsoNormal><span lang=EN-GB style='mso-ansi-language:EN-GB'>A list of
+the most important data structures and functions in the program follows. The
+functions are divided into three groups: simulation, visualization, and
+interaction. They are listed in inverse order of importance to the program’s
+functionality.<o:p></o:p></span></p>
+
+<p class=MsoNormal><span lang=EN-GB style='mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span></p>
+
+<p class=MsoNormal><b><span lang=EN-GB style='mso-ansi-language:EN-GB'>Global
+data structures:<o:p></o:p></span></b></p>
+
+<p class=MsoNormal style='margin-left:32.2pt;text-indent:-18.0pt;mso-list:l3 level1 lfo8;
+tab-stops:list 32.2pt'><![if !supportLists]><span lang=EN-GB style='font-family:
+Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:
+EN-GB;mso-bidi-font-weight:bold'><span style='mso-list:Ignore'>·<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><span dir=LTR><span class=SpellE><b><span
+lang=EN-GB style='mso-ansi-language:EN-GB'>plan_rc</span></b></span></span><b><span
+lang=EN-GB style='mso-ansi-language:EN-GB'>, <span class=SpellE>plan_cr</span>:<span
+style='mso-tab-count:2'>                      </span></span></b><span
+lang=EN-GB style='mso-ansi-language:EN-GB'>The 2D uniform n*n grid on which the
+simulation takes place. The actual data type for these structures comes from
+the FFTW library – you do not have to use these directly.<b><o:p></o:p></b></span></p>
+
+<p class=MsoNormal style='margin-left:32.2pt;text-indent:-18.0pt;mso-list:l3 level1 lfo8;
+tab-stops:list 32.2pt'><![if !supportLists]><span lang=EN-GB style='font-family:
+Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:
+EN-GB;mso-bidi-font-weight:bold'><span style='mso-list:Ignore'>·<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><span dir=LTR><span class=SpellE><span
+class=GramE><b><span lang=EN-GB style='mso-ansi-language:EN-GB'>fx</span></b></span></span></span><b><span
+lang=EN-GB style='mso-ansi-language:EN-GB'>, <span class=SpellE>fy</span>:<span
+style='mso-tab-count:4'>                                        </span></span></b><span
+lang=EN-GB style='mso-ansi-language:EN-GB'>The components of the 2D force
+vectors that drive (steer) the simulation. These are directly controlled by the
+user via the mouse.<b><o:p></o:p></b></span></p>
+
+<p class=MsoNormal style='margin-left:32.2pt;text-indent:-18.0pt;mso-list:l3 level1 lfo8;
+tab-stops:list 32.2pt'><![if !supportLists]><span lang=EN-GB style='font-family:
+Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:
+EN-GB;mso-bidi-font-weight:bold'><span style='mso-list:Ignore'>·<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><span dir=LTR><span class=GramE><b><span
+lang=EN-GB style='mso-ansi-language:EN-GB'>rho,</span></b></span></span><b><span
+lang=EN-GB style='mso-ansi-language:EN-GB'>rho0:<span style='mso-tab-count:
+3'>                                  </span></span></b><span lang=EN-GB
+style='mso-ansi-language:EN-GB'>The density of the matter which flows in. As
+the flow direction and speed changes, so does the density. See below.<b><o:p></o:p></b></span></p>
+
+<p class=MsoNormal style='margin-left:32.2pt;text-indent:-18.0pt;mso-list:l3 level1 lfo8;
+tab-stops:list 32.2pt'><![if !supportLists]><span lang=EN-GB style='font-family:
+Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:
+EN-GB;mso-bidi-font-weight:bold'><span style='mso-list:Ignore'>·<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><span dir=LTR><span class=GramE><b><span
+lang=EN-GB style='mso-ansi-language:EN-GB'>vx,</span></b></span></span><b><span
+lang=EN-GB style='mso-ansi-language:EN-GB'>vy,vx0,vy0:<span style='mso-tab-count:
+3'>                         </span></span></b><span lang=EN-GB
+style='mso-ansi-language:EN-GB'>The components of the 2D velocity field which is
+simulated. The simulation computes <span class=SpellE><b>v<span class=GramE>,rho</span></b></span>
+(velocity and density) out of <b>v0,rho0</b> (their previous values one
+time-step ago) and <b>f</b> (the forces).<br>
+<span style='mso-spacerun:yes'> </span><span style='mso-tab-count:4'>                                                </span>In
+a functional notation:<b><o:p></o:p></b></span></p>
+
+<p class=MsoNormal style='margin-left:14.2pt'><b><span lang=EN-GB
+style='mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span></b></p>
+
+<p class=MsoNormal style='margin-left:158.2pt;text-indent:21.8pt'><span
+lang=EN-GB style='mso-ansi-language:EN-GB'>(<span class=SpellE><span
+class=GramE>vx</span></span>, <span class=SpellE>vy</span>, <span class=SpellE>rho</span>)
+= <span class=SpellE>do_one_simulation_<span class=GramE>step</span></span><span
+class=GramE>(</span>vx0, vy0, rho0, <span class=SpellE>fx</span>, <span
+class=SpellE>fy</span>) <span style='mso-tab-count:1'>  </span><span
+style='mso-spacerun:yes'>      </span><o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-left:158.2pt;text-indent:21.8pt'><span
+lang=EN-GB style='mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span></p>
+
+<p class=MsoNormal style='margin-left:158.2pt;text-indent:21.8pt'><span
+class=GramE><span lang=EN-GB style='mso-ansi-language:EN-GB'>or</span></span><span
+lang=EN-GB style='mso-ansi-language:EN-GB'> in a more mathematical notation
+(bold denote vectors):<o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-left:158.2pt;text-indent:21.8pt'><span
+lang=EN-GB style='mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span></p>
+
+<p class=MsoNormal style='margin-left:158.2pt;text-indent:21.8pt'><span
+lang=EN-GB style='mso-ansi-language:EN-GB'>(<span class=GramE><b>v</b></span> (<span
+class=SpellE>t+<span style='font-family:Symbol'>D</span>t</span>), <span
+class=SpellE>rho</span>(<span class=SpellE>t+<span style='font-family:Symbol'>D</span>t</span>))
+= <span class=SpellE>do_one_simulation_<span class=GramE>step</span></span><span
+class=GramE>(</span><b>v</b>(t), <span class=SpellE>rho</span>(t), <b>f</b>(<span
+class=SpellE>t+<span style='font-family:Symbol'>D</span>t</span>))<o:p></o:p></span></p>
+
+<p class=MsoNormal><b><span lang=EN-GB style='mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span></b></p>
+
+<p class=MsoNormal><b><span lang=EN-GB style='mso-ansi-language:EN-GB'>Simulation
+functions:<o:p></o:p></span></b></p>
+
+<p class=MsoNormal><b><span lang=EN-GB style='mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span></b></p>
+
+<p class=MsoNormal style='margin-left:32.2pt;text-indent:-18.0pt;mso-list:l2 level1 lfo10;
+tab-stops:list 32.2pt'><![if !supportLists]><span lang=EN-GB style='font-family:
+Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:
+EN-GB;mso-bidi-font-weight:bold'><span style='mso-list:Ignore'>·<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><span dir=LTR><span class=SpellE><b><span
+lang=EN-GB style='mso-ansi-language:EN-GB'>do_one_simulation_step</span></b></span></span><b><span
+lang=EN-GB style='mso-ansi-language:EN-GB'>:<span style='mso-tab-count:1'>        </span></span></b><span
+lang=EN-GB style='mso-ansi-language:EN-GB'>Does one single step of the fluid
+flow simulation. This involves passing the mouse-controlled forces to the FFTW
+library, executing one simulation step to compute the new velocity and density
+values, and visualizing all these.<b><o:p></o:p></b></span></p>
+
+<p class=MsoNormal style='margin-left:180.0pt'><span lang=EN-GB
+style='mso-ansi-language:EN-GB'>This function is called repeatedly to keep on
+the simulation running forever. This is the <i>first</i> of the two functions
+calling the FFTW library.<o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-left:32.2pt;text-indent:-18.0pt;mso-list:l2 level1 lfo10;
+tab-stops:list 32.2pt'><![if !supportLists]><span lang=EN-GB style='font-family:
+Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:
+EN-GB;mso-bidi-font-weight:bold'><span style='mso-list:Ignore'>·<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><span dir=LTR><span class=GramE><b><span
+lang=EN-GB style='mso-ansi-language:EN-GB'>solve</span></b></span></span><b><span
+lang=EN-GB style='mso-ansi-language:EN-GB'>, <span class=SpellE>diffuse_matter</span>:</span></b><span
+lang=EN-GB style='mso-ansi-language:EN-GB'><span
+style='mso-spacerun:yes'>             </span>These functions contain the actual
+numerical simulation code which computes <span class=SpellE>vx</span>, <span
+class=SpellE>vy</span>, <span class=SpellE>rho</span> out of vx0, vy0, rho0,
+and <span class=SpellE>fx</span>, <span class=SpellE>fy</span>.<b><o:p></o:p></b></span></p>
+
+<p class=MsoNormal style='margin-left:32.2pt;text-indent:-18.0pt;mso-list:l2 level1 lfo10;
+tab-stops:list 32.2pt'><![if !supportLists]><span lang=EN-GB style='font-family:
+Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:
+EN-GB;mso-bidi-font-weight:bold'><span style='mso-list:Ignore'>·<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><span dir=LTR><span class=SpellE><b><span
+lang=EN-GB style='mso-ansi-language:EN-GB'>init_simulation</span></b></span></span><b><span
+lang=EN-GB style='mso-ansi-language:EN-GB'>:<span style='mso-tab-count:2'>                        </span></span></b><span
+lang=EN-GB style='mso-ansi-language:EN-GB'>Initialize the various global data
+structures as function of the grid size. This is the <i>second</i> of the two
+functions calling the FFTW library.<b><o:p></o:p></b></span></p>
+
+<p class=MsoNormal><b><span lang=EN-GB style='mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span></b></p>
+
+<p class=MsoNormal><b><span lang=EN-GB style='mso-ansi-language:EN-GB'>Visualization
+functions:<o:p></o:p></span></b></p>
+
+<p class=MsoNormal><b><span lang=EN-GB style='mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span></b></p>
+
+<p class=MsoNormal style='margin-left:32.2pt;text-indent:-18.0pt;mso-list:l0 level1 lfo12;
+tab-stops:list 32.2pt'><![if !supportLists]><span lang=EN-GB style='font-family:
+Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:
+EN-GB;mso-bidi-font-weight:bold'><span style='mso-list:Ignore'>·<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><span dir=LTR><span class=GramE><b><span
+lang=EN-GB style='mso-ansi-language:EN-GB'>visualize</span></b></span></span><b><span
+lang=EN-GB style='mso-ansi-language:EN-GB'>:<span style='mso-tab-count:3'>                                  </span></span></b><span
+lang=EN-GB style='mso-ansi-language:EN-GB'>Contains all the visualization code
+which draws the velocities <span class=SpellE>vx,vy</span>, and the density <span
+class=SpellE>rho</span>. This is the main visualization function.<b><o:p></o:p></b></span></p>
+
+<p class=MsoNormal style='margin-left:32.2pt;text-indent:-18.0pt;mso-list:l0 level1 lfo12;
+tab-stops:list 32.2pt'><![if !supportLists]><span lang=EN-GB style='font-family:
+Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:
+EN-GB;mso-bidi-font-weight:bold'><span style='mso-list:Ignore'>·<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><span dir=LTR><span class=GramE><b><span
+lang=EN-GB style='mso-ansi-language:EN-GB'>rainbow</span></b></span></span><b><span
+lang=EN-GB style='mso-ansi-language:EN-GB'>:<span style='mso-tab-count:3'>                                   </span></span></b><span
+lang=EN-GB style='mso-ansi-language:EN-GB'>Maps a floating-point value to a RGB
+<span class=SpellE>color</span> using a blue-to-red (rainbow) <span
+class=SpellE>colormap</span>.<b><o:p></o:p></b></span></p>
+
+<p class=MsoNormal style='margin-left:32.2pt;text-indent:-18.0pt;mso-list:l0 level1 lfo12;
+tab-stops:list 32.2pt'><![if !supportLists]><span lang=EN-GB style='font-family:
+Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:
+EN-GB;mso-bidi-font-weight:bold'><span style='mso-list:Ignore'>·<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><span dir=LTR><span class=SpellE><b><span
+lang=EN-GB style='mso-ansi-language:EN-GB'>direction_to_color</span></b></span></span><b><span
+lang=EN-GB style='mso-ansi-language:EN-GB'>:<span style='mso-tab-count:2'>                  </span></span></b><span
+lang=EN-GB style='mso-ansi-language:EN-GB'>Maps a vector’s direction to a RGB <span
+class=SpellE>color</span> using a directional hue-based <span class=SpellE>colormap</span>.<b><o:p></o:p></b></span></p>
+
+<p class=MsoNormal style='margin-left:14.2pt'><b><span lang=EN-GB
+style='mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span></b></p>
+
+<p class=MsoNormal><b><span lang=EN-GB style='mso-ansi-language:EN-GB'>Interaction
+functions:<o:p></o:p></span></b></p>
+
+<p class=MsoNormal><b><span lang=EN-GB style='mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span></b></p>
+
+<p class=MsoNormal style='margin-left:32.2pt;text-indent:-18.0pt;mso-list:l6 level1 lfo14;
+tab-stops:list 32.2pt'><![if !supportLists]><span lang=EN-GB style='font-family:
+Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:
+EN-GB;mso-bidi-font-weight:bold'><span style='mso-list:Ignore'>·<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><span dir=LTR><span class=GramE><b><span
+lang=EN-GB style='mso-ansi-language:EN-GB'>main</span></b></span></span><b><span
+lang=EN-GB style='mso-ansi-language:EN-GB'>:<span style='mso-tab-count:4'>                                        </span></span></b><span
+lang=EN-GB style='mso-ansi-language:EN-GB'>The main program. Prints some help
+messages and sets up GLUT to perform the display and interaction.<b><o:p></o:p></b></span></p>
+
+<p class=MsoNormal style='margin-left:32.2pt;text-indent:-18.0pt;mso-list:l6 level1 lfo14;
+tab-stops:list 32.2pt'><![if !supportLists]><span lang=EN-GB style='font-family:
+Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:
+EN-GB;mso-bidi-font-weight:bold'><span style='mso-list:Ignore'>·<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><span dir=LTR><span class=GramE><b><span
+lang=EN-GB style='mso-ansi-language:EN-GB'>drag</span></b></span></span><b><span
+lang=EN-GB style='mso-ansi-language:EN-GB'>:<span style='mso-tab-count:4'>                                         </span></span></b><span
+lang=EN-GB style='mso-ansi-language:EN-GB'>Called when the user
+clicks-and-drags the mouse in the visualization window. This sets up the force
+(<span class=SpellE>fx<span class=GramE>,fy</span></span>) and density (<span
+class=SpellE>rho</span>) at the mouse location, effectively steering the
+simulation.<b><o:p></o:p></b></span></p>
+
+<p class=MsoNormal style='margin-left:32.2pt;text-indent:-18.0pt;mso-list:l6 level1 lfo14;
+tab-stops:list 32.2pt'><![if !supportLists]><span lang=EN-GB style='font-family:
+Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:
+EN-GB;mso-bidi-font-weight:bold'><span style='mso-list:Ignore'>·<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><span dir=LTR><span class=GramE><b><span
+lang=EN-GB style='mso-ansi-language:EN-GB'>keyboard</span></b></span></span><b><span
+lang=EN-GB style='mso-ansi-language:EN-GB'>:</span></b><span lang=EN-GB
+style='mso-ansi-language:EN-GB'><span style='mso-tab-count:3'>                                </span>Changes
+the simulation and visualization parameters based on keyboard input.<b><o:p></o:p></b></span></p>
+
+<p class=MsoNormal style='margin-left:32.2pt;text-indent:-18.0pt;mso-list:l6 level1 lfo14;
+tab-stops:list 32.2pt'><![if !supportLists]><span lang=EN-GB style='font-family:
+Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:
+EN-GB;mso-bidi-font-weight:bold'><span style='mso-list:Ignore'>·<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><span dir=LTR><span class=GramE><b><span
+lang=EN-GB style='mso-ansi-language:EN-GB'>display</span></b></span></span><b><span
+lang=EN-GB style='mso-ansi-language:EN-GB'>:</span></b><span lang=EN-GB
+style='mso-ansi-language:EN-GB'> <span style='mso-tab-count:3'>                                   </span>Draws
+a new visualization frame, whenever the simulation is ready with producing a
+new step.<b><o:p></o:p></b></span></p>
+
+<p class=MsoNormal><span lang=EN-GB style='font-size:14.0pt;mso-bidi-font-size:
+12.0pt;mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span></p>
+
+<p class=MsoNormal><span lang=EN-GB style='font-size:14.0pt;mso-bidi-font-size:
+12.0pt;font-family:Arial;mso-ansi-language:EN-GB'>6. Further reading<o:p></o:p></span></p>
+
+<p class=MsoNormal><span lang=EN-GB style='font-size:14.0pt;mso-bidi-font-size:
+12.0pt;font-family:Arial;mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span></p>
+
+<p class=MsoNormal><span lang=EN-GB style='mso-ansi-language:EN-GB'>If you are interested
+to study the above topics in more depth, there is additional documentation in
+the fftw-2.1.3 directory on the FFTW library implementation. The overall
+simulation algorithm is described in the paper “A Simple Fluid Solver based on
+the FFT” by <span class=SpellE>Jos</span> <span class=SpellE>Stam</span>
+(Journal of Graphics Tools, volume 6, number 2, 2001, pages 43-52). You can
+find the paper online e.g. at <a
+href="http://www.dgp.utoronto.ca/people/stam/reality/Research/pub.html">http://www.dgp.utoronto.ca/people/stam/reality/Research/pub.html</a>
+or other sites (Google for it).<o:p></o:p></span></p>
+
+<p class=MsoNormal><span lang=EN-GB style='font-size:14.0pt;mso-bidi-font-size:
+12.0pt;mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span></p>
+
+<p class=MsoNormal><span lang=EN-GB style='font-size:14.0pt;mso-bidi-font-size:
+12.0pt;mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span></p>
+
+<p class=MsoNormal><span lang=EN-GB style='font-size:14.0pt;mso-bidi-font-size:
+12.0pt;mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span></p>
+
+</div>
+
+</body>
+
+</html>