Skip to content

TTeun/scientific_visualization

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

<!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>

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published