<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
<!--}}}-->
Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
/*{{{*/
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}

a {color:[[ColorPalette::PrimaryMid]];}
a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
a img {border:0;}

h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}

.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}

.header {background:[[ColorPalette::PrimaryMid]];}
.headerShadow {color:[[ColorPalette::Foreground]];}
.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
.headerForeground {color:[[ColorPalette::Background]];}
.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}

.tabSelected {color:[[ColorPalette::PrimaryDark]];
	background:[[ColorPalette::TertiaryPale]];
	border-left:1px solid [[ColorPalette::TertiaryLight]];
	border-top:1px solid [[ColorPalette::TertiaryLight]];
	border-right:1px solid [[ColorPalette::TertiaryLight]];
}
.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0;}

#sidebar {}
#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}

.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
	border:1px solid [[ColorPalette::PrimaryMid]];}
.wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
	border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
	border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}

.wizard .notChanged {background:transparent;}
.wizard .changedLocally {background:#80ff80;}
.wizard .changedServer {background:#8080ff;}
.wizard .changedBoth {background:#ff8080;}
.wizard .notFound {background:#ffff80;}
.wizard .putToServer {background:#ff80ff;}
.wizard .gotFromServer {background:#80ffff;}

#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}

.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}

.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}

.tiddler .defaultCommand {font-weight:bold;}

.shadow .title {color:[[ColorPalette::TertiaryDark]];}

.title {color:[[ColorPalette::SecondaryDark]];}
.subtitle {color:[[ColorPalette::TertiaryDark]];}

.toolbar {color:[[ColorPalette::PrimaryMid]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}

.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
.tagging .button, .tagged .button {border:none;}

.footer {color:[[ColorPalette::TertiaryLight]];}
.selected .footer {color:[[ColorPalette::TertiaryMid]];}

.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
.lowlight {background:[[ColorPalette::TertiaryLight]];}

.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}

.imageLink, #displayArea .imageLink {background:transparent;}

.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}

.viewer .listTitle {list-style-type:none; margin-left:-2em;}
.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}

.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}

.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
.viewer code {color:[[ColorPalette::SecondaryDark]];}
.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}

.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}

.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
.editorFooter {color:[[ColorPalette::TertiaryMid]];}
.readOnly {background:[[ColorPalette::TertiaryPale]];}

#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:alpha(opacity=60);}
/*}}}*/
/*{{{*/
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#mainMenu .tiddlyLinkExisting,
	#mainMenu .tiddlyLinkNonExisting,
	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}

.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0 1em 1em; left:0; top:0;}

.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}

#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 0.3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

.wizard {padding:0.1em 1em 0 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0 0; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0;}
.wizardFooter .status {padding:0 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em;}

#messageArea {position:fixed; top:2em; right:0; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em;}
#messageArea a {text-decoration:underline;}

.tiddlerPopupButton {padding:0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}

.tabset {padding:1em 0 0 0.5em;}
.tab {margin:0 0 0 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}

#contentWrapper {display:block;}
#splashScreen {display:none;}

#displayArea {margin:1em 17em 0 14em;}

.toolbar {text-align:right; font-size:.9em;}

.tiddler {padding:1em 1em 0;}

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0 0.25em; padding:0 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0 3px 0 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0; font-size:.9em;}
.editorFooter .button {padding-top:0; padding-bottom:0;}

.fieldsetFix {border:0; padding:0; margin:1px 0px;}

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0; right:0;}
#backstageButton a {padding:0.1em 0.4em; margin:0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; width:90%; margin-left:3em; padding:1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
/***
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes.
***/
/*{{{*/
body {font-size:0.8em;}
#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}
.subtitle {font-size:0.8em;}
.viewer table.listView {font-size:0.95em;}
/*}}}*/
/*{{{*/
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none !important;}
#displayArea {margin: 1em 1em 0em;}
noscript {display:none;} /* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
}
/*}}}*/
<!--{{{-->
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser excludeLists'></span></div>
<!--}}}-->
To get started with this blank [[TiddlyWiki]], you'll need to modify the following tiddlers:
* [[SiteTitle]] & [[SiteSubtitle]]: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* [[MainMenu]]: The menu (usually on the left)
* [[DefaultTiddlers]]: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>
These [[InterfaceOptions]] for customising [[TiddlyWiki]] are saved in your browser

Your username for signing your edits. Write it as a [[WikiWord]] (eg [[JoeBloggs]])

<<option txtUserName>>
<<option chkSaveBackups>> [[SaveBackups]]
<<option chkAutoSave>> [[AutoSave]]
<<option chkRegExpSearch>> [[RegExpSearch]]
<<option chkCaseSensitiveSearch>> [[CaseSensitiveSearch]]
<<option chkAnimate>> [[EnableAnimations]]

----
Also see [[AdvancedOptions]]
<<importTiddlers>>
Following is a list of my major codes. Most of them are open source except as indicated.

# [[cfdlab|http://cfdlab.googlecode.com]]: This is a collection of many small codes I am working on.
# [[fvm2d|http://code.google.com/p/cfdlab/source/browse/#svn%2Ftrunk%2F2d%2Ffvm2d]]: 2-D vertex-based finite volume code on triangular grids with ~Spalart-Allmaras turbulence model.
# [[euler2d|http://euler2d.sourceforge.net]]: A 2-D inviscid, compressible, finite volume code together with an adjoint solver. It uses triangular grids and automatic differentiation (Tapenade).
# [[flo2d|http://flo2d.googlecode.com]]: Vertex-centroid finite volume scheme on triangular grids for inviscid and viscous flows
# [[flo3d|http://flo3d.googlecode.com]]: Vertex-centroid finite volume scheme on tetrahedral grid for inviscid and viscous flows
# [[nuwtun|http://nuwtun.berlios.de]]: 2/3-D structured grid, cell-centered, finite volume code for Euler/NS equations. Also has adjoint in 2-D.
# [[dflo:|http://dflo.sourceforge.net]]: Discontinuous Galerkin code for solving Euler equations in two and three dimensions
# [[gFoam|http://sourceforge.net/projects/gfoam/]]: Godunov FV code based on ~OpenFoam
# [[ffdtool|http://ffdtool.origo.ethz.ch]]: Free-form deformation tool used for shape optimization (closed source)
# [[optool|http://optool.origo.ethz.ch]]: Parallel Optimization tool based on PSO and surrogate models (closed source)
Class timings: Monday, Thursday (4:00-5:30 pm)
Venue: Auditorium, Ground Floor

# List of reference texts ([[pdf|http://dl.dropbox.com/u/8215933/numpde/references.pdf]])
# Introduction ([[Reading|http://dl.dropbox.com/u/8215933/numpde/intro.pdf]]), ([[Printing|http://dl.dropbox.com/u/8215933/numpde/intro-nup.pdf]])
# Boundary value problem in 1-D ([[Reading|http://dl.dropbox.com/u/8215933/numpde/bvp_1d.pdf]]), ([[Printing|http://dl.dropbox.com/u/8215933/numpde/bvp_1d-nup.pdf]])
# FD for Poisson equation in 2-D ([[Reading|http://dl.dropbox.com/u/8215933/numpde/poission_fd.pdf]]), ([[Printing|http://dl.dropbox.com/u/8215933/numpde/poission_fd-nup.pdf]])
# FD for 1-D heat equation ([[Reading|http://dl.dropbox.com/u/8215933/numpde/heat_1d.pdf]]), ([[Printing|http://dl.dropbox.com/u/8215933/numpde/heat_1d-nup.pdf]])
# FD for 1-D linear convection (hyperbolic) equation ([[Reading|http://dl.dropbox.com/u/8215933/numpde/lin_hyp_fd.pdf]]), ([[Printing|http://dl.dropbox.com/u/8215933/numpde/lin_hyp_fd-nup.pdf]])
# Scalar conservation laws ([[Reading|http://dl.dropbox.com/u/8215933/numpde/conlaw_slides.pdf]]), ([[Printing|http://dl.dropbox.com/u/8215933/numpde/conlaw_slides-nup.pdf]])
# FVM for conservation laws I ([[Reading|http://dl.dropbox.com/u/8215933/numpde/fv_hyp1.pdf]]), ([[Printing|http://dl.dropbox.com/u/8215933/numpde/fv_hyp1-nup.pdf]])
# FVM for conservation laws II: Godunov scheme ([[Reading|http://dl.dropbox.com/u/8215933/numpde/fv_hyp2.pdf]]), ([[Printing|http://dl.dropbox.com/u/8215933/numpde/fv_hyp2-nup.pdf]])
# FVM for conservation laws III: Monotone and TVD schemes ([[Reading|http://dl.dropbox.com/u/8215933/numpde/fv_hyp3.pdf]]), ([[Printing|http://dl.dropbox.com/u/8215933/numpde/fv_hyp3-nup.pdf]])
# FVM for conservation laws IV: Incremental and viscosity form ([[Reading|http://dl.dropbox.com/u/8215933/numpde/fv_hyp4.pdf]]), ([[Printing|http://dl.dropbox.com/u/8215933/numpde/fv_hyp4-nup.pdf]])
# FVM for conservation laws V: Schemes satisfying entropy condition ([[Reading|http://dl.dropbox.com/u/8215933/numpde/fv_hyp5.pdf]]), ([[Printing|http://dl.dropbox.com/u/8215933/numpde/fv_hyp5-nup.pdf]])
# FVM for conservation laws VI: Approximate Riemann solver ([[Reading|http://dl.dropbox.com/u/8215933/numpde/fv_hyp6.pdf]]), ([[Printing|http://dl.dropbox.com/u/8215933/numpde/fv_hyp6-nup.pdf]])
# FVM for conservation laws VII: Modified flux approach ([[Reading|http://dl.dropbox.com/u/8215933/numpde/fv_hyp7.pdf]]), ([[Printing|http://dl.dropbox.com/u/8215933/numpde/fv_hyp7-nup.pdf]])
# FVM for conservation laws VIII: Flux limiter approach ([[Reading|http://dl.dropbox.com/u/8215933/numpde/fv_hyp8.pdf]]), ([[Printing|http://dl.dropbox.com/u/8215933/numpde/fv_hyp8-nup.pdf]])
# FVM for conservation laws IX: Second order extension of Godunov scheme ([[Reading|http://dl.dropbox.com/u/8215933/numpde/fv_hyp9.pdf]]), ([[Printing|http://dl.dropbox.com/u/8215933/numpde/fv_hyp9-nup.pdf]])
# ENO and WENO schemes ([[Reading|http://dl.dropbox.com/u/8215933/numpde/eno_weno.pdf]]), ([[Printing|http://dl.dropbox.com/u/8215933/numpde/eno_weno-nup.pdf]])
# FEM for 1-D BVP ([[Reading|http://dl.dropbox.com/u/8215933/numpde/elliptic_fem_1d.pdf]]), ([[Printing|http://dl.dropbox.com/u/8215933/numpde/elliptic_fem_1d-nup.pdf]])
# Lagrange finite elements and interpolation error ([[Reading|http://dl.dropbox.com/u/8215933/numpde/fem_error.pdf]]), ([[Printing|http://dl.dropbox.com/u/8215933/numpde/fem_error-nup.pdf]])
# Galerkin finite element method ([[Reading|http://dl.dropbox.com/u/8215933/numpde/fem_basics.pdf]]), ([[Printing|http://dl.dropbox.com/u/8215933/numpde/fem_basics-nup.pdf]])
# Finite element programming ([[Reading|http://dl.dropbox.com/u/8215933/numpde/fem_program.pdf]]), ([[Printing|http://dl.dropbox.com/u/8215933/numpde/fem_program-nup.pdf]])
# A posteriori error estimate for elliptic problems ([[Reading|http://dl.dropbox.com/u/8215933/numpde/aposteriori_error.pdf]]), ([[Printing|http://dl.dropbox.com/u/8215933/numpde/aposteriori_error-nup.pdf]])
# Galerkin method for parabolic problems ([[Reading|http://dl.dropbox.com/u/8215933/numpde/fem_parabolic.pdf]]), ([[Printing|http://dl.dropbox.com/u/8215933/numpde/fem_parabolic-nup.pdf]])
# FEM for convection-dominated and hyperbolic problems ([[Reading|http://dl.dropbox.com/u/8215933/numpde/fem_hyp.pdf]]), ([[Printing|http://dl.dropbox.com/u/8215933/numpde/fem_hyp-nup.pdf]])

!! Assignments
# Assignment I ([[pdf|http://dl.dropbox.com/u/8215933/numpde/assign1.pdf]])
# Assignment II ([[pdf|http://dl.dropbox.com/u/8215933/numpde/assign2.pdf]])
# Assignment III ([[pdf|http://dl.dropbox.com/u/8215933/numpde/assign3.pdf]])
# Assignment IV ([[pdf|http://dl.dropbox.com/u/8215933/numpde/assign4.pdf]])

!! Computer programs
# [[BVP in 1-D using FD|http://dl.dropbox.com/u/8215933/numpde/codes/bvp_1d.m]]
# Heat equation in 1-D: [[FTCS|http://dl.dropbox.com/u/8215933/numpde/codes/heat_1d_fe.m]], [[Backward Euler|http://dl.dropbox.com/u/8215933/numpde/codes/heat_1d_be.m]], [[Crank-Nicholson|http://dl.dropbox.com/u/8215933/numpde/codes/heat_1d_cn.m]]
# FD scheme for Linear convection equation in 1-D: [[Periodic|http://dl.dropbox.com/u/8215933/numpde/codes/lin_hyp_1d_periodic.m]], [[Discontinuous|http://dl.dropbox.com/u/8215933/numpde/codes/lin_hyp_1d_disc.m]]
# [[First order finite volume scheme for Burgers equation|http://dl.dropbox.com/u/8215933/numpde/codes/conlaw.m]]
# [[Linear convection equation using flux limiter approach and periodic boundary conditions|http://dl.dropbox.com/u/8215933/numpde/codes/lin_hyp_1d_periodic_fluxlimiter.m]]]
# FEM programs using Fenics: [[code|http://code.google.com/p/cfdlab/source/browse/trunk/teaching/comppde2012/fenics/]], [[README|http://code.google.com/p/cfdlab/source/browse/trunk/teaching/comppde2012/fenics/README]]

!! FEM Matlab code
Download the code from [[here|http://dl.dropbox.com/u/8215933/numpde/codes/fem50.tgz]]
Start terminal and extract the files
{{{
tar zxvf fem50.tgz
}}}
Go into any problem directory, e.g.
{{{
cd fem50/square
}}}
Start matlab
{{{
matlab
}}}
Set path to src
{{{
>> path(path,'../src')
}}}
Create mesh
{{{
>> square(10)
}}}
This should create the files {{{coordinates.dat, elements3.dat, dirichlet.dat}}}. Now run the fem code
{{{
>> fem_50
}}}

!! Additional material
# Notes on scalar conservation laws by Prof. Baskar ([[pdf|http://dl.dropbox.com/u/8215933/numpde/conlaw.pdf]])
# Notes on numerical methods by Prof. Gowda ([[pdf|http://dl.dropbox.com/u/8215933/numpde/gowda_notes.pdf]])
!! Mailing address

Praveen. C
~TIFR-CAM
Post Bag No. 6503
GKVK PO
Bangalore 560065
India

!!Geographical address

Tata Institute of Fundamental Research
Center for Applicable Mathematics
Near Yelahanka New Town Bus Stand
Sharada Nagar
Chikkabommasandra
Bangalore 560065
Karnataka, India

!! Office

Room No. 120

!! Telephone

(+91)(0)(80) 66953719

I am usually available at this number from Monday to Friday between 9 AM to 6 PM (Indian time). The (0) is for dialling from within India using STD.

!! Email

To send me an email, click [[here|http://math.tifrbng.res.in/~praveen/email.html]].

!! Important Note

# Email is the preferred way of contacting me.
# If you are sending a mass email (ie. to multiple recipients) please put the email addresses in the BCC field.
# Please do not send me any email invitations for facebook/orkut/linkedin etc.
# Please do not send me any Microsoft Word or Powerpoint attachments.
# If you are sending an application, it better be a PDF. Otherwise, I may not even read it.
[[Welcome to my website !!!]]
[[Computational PDE 2012]]
[[Open Positions]]
If you want to do summer internship during 2011 in ~TIFR-CAM under my guidance, you can write to me using the contact page on the left. Please type your resume into the box and explain your interest area. Some of the topics are listed below; if you are interested in any one of them, indicate your preference and your necessary background for the problem. The minimum duration of internship is 2 months. To apply for a ~TIFR-CAM internship, click [[here|http://math.tifrbng.res.in/ssrp]].

You can also apply for a Science Academy Fellowship [[here|http://web-japps.ias.ac.in:8080/srfp2011]]  (Deadline: 31 Dec 2010) and work with me during the summer. My fellow id is ~FL843 which you have to enter in the application.

Some areas in which you can do internships are given below. The required background is indicated for each problem.
# Scientific computing on [[graphics processing units|http://www.nvidia.com/object/tesla_computing_solutions.html]] (GPU) using [[CUDA|http://www.nvidia.com/object/what_is_cuda_new.html]] (Numerical solution of PDE, good knowledge of C/C++)
# Solution and optimization of PDE problems using reduced order models (Numerical solution of PDE, FEM)
# Isogeometric Analysis of PDE
# Development of a mesh deformation tool using radial basis functions and application to shape optimization (Numerical Linear Algebra, Fortran/C/C++)
[[Home|Welcome to my website !!!]]
[[Research]]
[[Codes]]
[[People]]
[[Publications]]
[[Talks]]
[[CFD Blog|http://www.cfd-online.com/Forums/blogs/praveen]]
[[Internships]]
[[Open Positions]]
[[Contact]]
[[GettingStarted]]

<html>
<a href="http://math.tifrbng.res.in">
<img src="images/tifr.png" style="width: 70px; "/>
</a>
</html>
''__This position is closed.__''

Applications are invited from qualified candidates for a Project Assistant position in __numerical methods for rotating and slip flows__. The position is for a duration of one year.

!!! Required qualifications
# First class in Masters/~PhD degree in any one of the following: Applied Mathematics, Computational Science or Engineering
# Exposure to fluid dynamics during course-work or projects
# Knowledge of finite volume/finite element methods for ~Navier-Stokes equations
# Knowledge of Fortran/C/C++
# Experience in working on Linux/Unix computers

!!! How to apply ?
To apply for this position, click [[here|http://math.tifrbng.res.in/~praveen/email.html]]. Some instructions:

# Type a ''__brief__'' resume into the message box. 
# Write your academic qualifications: institute of study, marks scored, year of graduation.
# Write any other ''__relevant__'' information like project work, work experience, etc.
# Write your date of birth.
# Indicate your current position and place of work/residence.

''__You must send your application by following the above procedure. Applications   sent directly by email will be ignored.__''

If you are found suitable for an interview, you will be informed by email. There is no need to make enquiries about your application. Salary and other details will be given only if you are found suitable for interview. 

For any other enquiries, use the [[contact|http://math.tifrbng.res.in/~praveen/email.html]] form. Telephonic enquiries are strictly discouraged.
There is one open position available at present.

!! Research Assistant
Applications are invited from qualified candidates for a Research Assistant position on aerodynamic shape optimization. The position is for a maximum duration of one year.

!!! Required qualifications
# First class Bachelors/Masters degree in Aeronautics/Mechanical engineering
# Exposure to fluid dynamics, aerodynamics, CFD during course-work or projects
# Knowledge of Fortran and C
# Experience in working on Linux/Unix computers
# Experience in using grid generation tools like Gridgen

!!! How to apply ?
To apply for this position, click [[here|http://math.tifrbng.res.in/~praveen/email.html]]. Some instructions:

# Type a ''__brief__'' resume into the message box. 
# Write your academic qualifications: institute of study, marks scored, year of graduation.
# Write any other ''__relevant__'' information like project work, work experience, etc.
# Write your date of birth.
# Indicate your current position and place of work/residence.

''__You must send your application by following the above procedure. Applications   sent directly by email will be ignored.__''

If you are found suitable for an interview, you will be informed by email. There is no need to make enquiries about your application. Salary and other details will be given only if you are found suitable for interview. 

For any other enquiries, use the [[contact|http://math.tifrbng.res.in/~praveen/email.html]] form. Telephonic enquiries are strictly discouraged.
<!--{{{-->
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='macro' force='true' macro='slider chkSideBarTabs SideBarTabs "index »" "display lists of tiddlers"'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
!!! Project assistants
# Digvijay Chauhan (Apr 2010 to Sep 2010); subsequent position: Airbus, Bangalore
# Ashish Garg (Feb 2011 to Jun 2011)
# Pranav Gujar (Jun 2011 to Nov 2011); subsequent position: CRL, Pune
# Ashish Garg (Jan 2012 to March 2012)
# Anant Diwakar (Jan 2013 to )

!!! Interns
# Ankit Pat, IIT Kharagpur, 1 June - 15 July, 2009
# Ravish Karve, Embry Riddle Aeronautical Univ., 10 June - 10 July, 2009
# Amitabh Vajpayee, Bits Pilani, ~May-July 2010
# Sanchit Singh, IIT Guwahati, ~May-July 2010
# Mayank Takker, IIT Guwahati, ~May-July 2010 (through IAS)
# Ankush Agrawal, IIT Kharagpur, ~May-July 2010
# Nisha C, IIT Roorkee, ~May-July 2012 (through IAS)
/***
|Name|SinglePageModePlugin|
|Source|http://www.TiddlyTools.com/#SinglePageModePlugin|
|Documentation|http://www.TiddlyTools.com/#SinglePageModePluginInfo|
|Version|2.9.6|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|Show tiddlers one at a time with automatic permalink, or always open tiddlers at top/bottom of page.|
This plugin allows you to configure TiddlyWiki to navigate more like a traditional multipage web site with only one tiddler displayed at a time.
!!!!!Documentation
>see [[SinglePageModePluginInfo]]
!!!!!Configuration
<<<
<<option chkSinglePageMode>> Display one tiddler at a time
><<option chkSinglePagePermalink>> Automatically permalink current tiddler
><<option chkSinglePageKeepFoldedTiddlers>> Don't close tiddlers that are folded
><<option chkSinglePageKeepEditedTiddlers>> Don't close tiddlers that are being edited
<<option chkTopOfPageMode>> Open tiddlers at the top of the page
<<option chkBottomOfPageMode>> Open tiddlers at the bottom of the page
<<option chkSinglePageAutoScroll>> Automatically scroll tiddler into view (if needed)

Notes:
* The "display one tiddler at a time" option can also be //temporarily// set/reset by including a 'paramifier' in the document URL: {{{#SPM:true}}} or {{{#SPM:false}}}.
* If more than one display mode is selected, 'one at a time' display takes precedence over both 'top' and 'bottom' settings, and if 'one at a time' setting is not used, 'top of page' takes precedence over 'bottom of page'.
* When using Apple's Safari browser, automatically setting the permalink causes an error and is disabled.
<<<
!!!!!Revisions
<<<
2008.10.17 [2.9.6] changed chkSinglePageAutoScroll default to false
| Please see [[SinglePageModePluginInfo]] for previous revision details |
2005.08.15 [1.0.0] Initial Release.  Support for BACK/FORWARD buttons adapted from code developed by Clint Checketts.
<<<
!!!!!Code
***/
//{{{
version.extensions.SinglePageModePlugin= {major: 2, minor: 9, revision: 6, date: new Date(2008,10,17)};
//}}}
//{{{
config.paramifiers.SPM = { onstart: function(v) {
	config.options.chkSinglePageMode=eval(v);
	if (config.options.chkSinglePageMode && config.options.chkSinglePagePermalink && !config.browser.isSafari) {
		config.lastURL = window.location.hash;
		if (!config.SPMTimer) config.SPMTimer=window.setInterval(function() {checkLastURL();},1000);
	}
} };
//}}}
//{{{
if (config.options.chkSinglePageMode==undefined)
	config.options.chkSinglePageMode=false;
if (config.options.chkSinglePagePermalink==undefined)
	config.options.chkSinglePagePermalink=true;
if (config.options.chkSinglePageKeepFoldedTiddlers==undefined)
	config.options.chkSinglePageKeepFoldedTiddlers=false;
if (config.options.chkSinglePageKeepEditedTiddlers==undefined)
	config.options.chkSinglePageKeepEditedTiddlers=false;
if (config.options.chkTopOfPageMode==undefined)
	config.options.chkTopOfPageMode=false;
if (config.options.chkBottomOfPageMode==undefined)
	config.options.chkBottomOfPageMode=false;
if (config.options.chkSinglePageAutoScroll==undefined)
	config.options.chkSinglePageAutoScroll=false;
//}}}
//{{{
config.SPMTimer = 0;
config.lastURL = window.location.hash;
function checkLastURL()
{
	if (!config.options.chkSinglePageMode)
		{ window.clearInterval(config.SPMTimer); config.SPMTimer=0; return; }
	if (config.lastURL == window.location.hash) return; // no change in hash
	var tids=decodeURIComponent(window.location.hash.substr(1)).readBracketedList();
	if (tids.length==1) // permalink (single tiddler in URL)
		story.displayTiddler(null,tids[0]);
	else { // restore permaview or default view
		config.lastURL = window.location.hash;
		if (!tids.length) tids=store.getTiddlerText("DefaultTiddlers").readBracketedList();
		story.closeAllTiddlers();
		story.displayTiddlers(null,tids);
	}
}


if (Story.prototype.SPM_coreDisplayTiddler==undefined)
	Story.prototype.SPM_coreDisplayTiddler=Story.prototype.displayTiddler;
Story.prototype.displayTiddler = function(srcElement,tiddler,template,animate,slowly)
{
	var title=(tiddler instanceof Tiddler)?tiddler.title:tiddler;
	var tiddlerElem=document.getElementById(story.idPrefix+title); // ==null unless tiddler is already displayed
	var opt=config.options;
	var single=opt.chkSinglePageMode && !startingUp;
	var top=opt.chkTopOfPageMode && !startingUp;
	var bottom=opt.chkBottomOfPageMode && !startingUp;
	if (single) {
		story.forEachTiddler(function(tid,elem) {
			// skip current tiddler and, optionally, tiddlers that are folded.
			if (	tid==title
				|| (opt.chkSinglePageKeepFoldedTiddlers && elem.getAttribute("folded")=="true"))
				return;
			// if a tiddler is being edited, ask before closing
			if (elem.getAttribute("dirty")=="true") {
				if (opt.chkSinglePageKeepEditedTiddlers) return;
				// if tiddler to be displayed is already shown, then leave active tiddler editor as is
				// (occurs when switching between view and edit modes)
				if (tiddlerElem) return;
				// otherwise, ask for permission
				var msg="'"+tid+"' is currently being edited.\n\n";
				msg+="Press OK to save and close this tiddler\nor press Cancel to leave it opened";
				if (!confirm(msg)) return; else story.saveTiddler(tid);
			}
			story.closeTiddler(tid);
		});
	}
	else if (top)
		arguments[0]=null;
	else if (bottom)
		arguments[0]="bottom";
	if (single && opt.chkSinglePagePermalink && !config.browser.isSafari) {
		window.location.hash = encodeURIComponent(String.encodeTiddlyLink(title));
		config.lastURL = window.location.hash;
		document.title = wikifyPlain("SiteTitle") + " - " + title;
		if (!config.SPMTimer) config.SPMTimer=window.setInterval(function() {checkLastURL();},1000);
	}
	if (tiddlerElem && tiddlerElem.getAttribute("dirty")=="true") { // editing... move tiddler without re-rendering
		var isTopTiddler=(tiddlerElem.previousSibling==null);
		if (!isTopTiddler && (single || top))
			tiddlerElem.parentNode.insertBefore(tiddlerElem,tiddlerElem.parentNode.firstChild);
		else if (bottom)
			tiddlerElem.parentNode.insertBefore(tiddlerElem,null);
		else this.SPM_coreDisplayTiddler.apply(this,arguments); // let CORE render tiddler
	} else
		this.SPM_coreDisplayTiddler.apply(this,arguments); // let CORE render tiddler
	var tiddlerElem=document.getElementById(story.idPrefix+title);
	if (tiddlerElem&&opt.chkSinglePageAutoScroll) {
		// scroll to top of page or top of tiddler
		var isTopTiddler=(tiddlerElem.previousSibling==null);
		var yPos=isTopTiddler?0:ensureVisible(tiddlerElem);
		// if animating, defer scroll until after animation completes
		var delay=opt.chkAnimate?config.animDuration+10:0;
		setTimeout("window.scrollTo(0,"+yPos+")",delay); 
	}
}

if (Story.prototype.SPM_coreDisplayTiddlers==undefined)
	Story.prototype.SPM_coreDisplayTiddlers=Story.prototype.displayTiddlers;
Story.prototype.displayTiddlers = function() {
	// suspend single/top/bottom modes when showing multiple tiddlers
	var opt=config.options;
	var saveSPM=opt.chkSinglePageMode; opt.chkSinglePageMode=false;
	var saveTPM=opt.chkTopOfPageMode; opt.chkTopOfPageMode=false;
	var saveBPM=opt.chkBottomOfPageMode; opt.chkBottomOfPageMode=false;
	this.SPM_coreDisplayTiddlers.apply(this,arguments);
	opt.chkBottomOfPageMode=saveBPM;
	opt.chkTopOfPageMode=saveTPM;
	opt.chkSinglePageMode=saveSPM;
}
//}}}
/***
|Name|SinglePageModePluginInfo|
|Source|http://www.TiddlyTools.com/#SinglePageModePlugin|
|Documentation|http://www.TiddlyTools.com/#SinglePageModePluginInfo|
|Version|2.9.6|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|documentation|
|Description|Documentation for SinglePageModePlugin|
Normally, as you click on the links in TiddlyWiki, more and more tiddlers are displayed on the page. The order of this tiddler display depends upon when and where you have clicked. Some people like this non-linear method of reading the document, while others have reported that when many tiddlers have been opened, it can get somewhat confusing.  SinglePageModePlugin allows you to configure TiddlyWiki to navigate more like a traditional multipage web site with only one item displayed at a time.
!!!!!Usage
<<<
When the plugin is enabled, only one tiddler will be displayed at a time and the browser window's titlebar is updated to include the current tiddler title.  The browser's location URL is also updated with a 'permalink' for the current tiddler so that it is easier to create a browser 'bookmark' for the current tiddler.  Alternatively, even when displaying multiple tiddlers //is// permitted, you can still reduce the potential for confusion by forcing  tiddlers to always open at the top (or bottom) of the page instead of being displayed following the tiddler containing the link that was clicked.
<<<
!!!!!Configuration
<<<
<<option chkSinglePageMode>> Display one tiddler at a time
><<option chkSinglePagePermalink>> Automatically permalink current tiddler
><<option chkSinglePageKeepFoldedTiddlers>> Don't close tiddlers that are folded
><<option chkSinglePageKeepEditedTiddlers>> Don't close tiddlers that are being edited
<<option chkTopOfPageMode>> Open tiddlers at the top of the page
<<option chkBottomOfPageMode>> Open tiddlers at the bottom of the page
<<option chkSinglePageAutoScroll>> Automatically scroll tiddler into view (if needed)

Notes:
* {{block{
The "display one tiddler at a time" option can also be //temporarily// set/reset by including a 'paramifier' in the document URL: {{{#SPM:true}}} or {{{#SPM:false}}}. You can also use {{{SPM:expression}}}, where 'expression' is any javascript statement that evaluates to true or false.  This allows you to create hard-coded links in other documents that can selectively enable/disable the use of this option based on various programmatic conditions, such as the current username. For example, using
&nbsp;&nbsp;&nbsp;{{{#SPM:config.options.txtUserName!="SomeName"}}}
enables 'one tiddler at a time' display for all users //other than// "~SomeName")}}}
* If more than one display mode is selected, 'one at a time' display takes precedence over both 'top' and 'bottom' settings, and if 'one at a time' setting is not used, 'top of page' takes precedence over 'bottom of page'.
* When using Apple's Safari browser, automatically setting the permalink causes an error and is disabled.
<<<
!!!!!Revisions
<<<
2008.10.17 2.9.6 changed chkSinglePageAutoScroll default to false
2008.06.12 2.9.5 corrected 'scroll to top of page' logic in auto-scroll handling
2008.06.11 2.9.4 added chkSinglePageKeepEditedTiddlers option
2008.06.05 2.9.3 in displayTiddler(), bypass single/top/bottom mode handling if startingUp.  Allows multiple tiddlers to be displayed during startup processing (e.g., #story:DefaultTiddlers), even if single/top/bottom mode is enabled.
2008.04.18 2.9.2 in displayTiddler() and checkLastURL(), handling for Unicode in tiddler titles (remove explicit conversion between Unicode and UTF, as this is apparently done automatically by encode/decodeURIComponent, resulting in double-encoding!
2008.04.08 2.9.1 don't automatically add options to AdvancedOptions shadow tiddler
2008.04.02 2.9.0 in displayTiddler(), when single-page mode is in use and a tiddler is being edited, ask for permission to save-and-close that tiddler, instead of just leaving it open.
2008.03.29 2.8.3 in displayTiddler(), get title from tiddler object (if needed).  Fixes errors caused when calling function passes a tiddler *object* instead of a tiddler *title*
2008.03.14 2.8.2 in displayTiddler(), if editing specified tiddler, just move it to top/bottom of story *without* re-rendering (prevents discard of partial edits).
2008.03.06 2.8.1 in paramifier handler, start 'checkURL' timer if chkSinglePageMode is enabled
2008.03.06 2.8.0 added option, {{{config.options.chkSinglePageKeepFoldedTiddlers}}}, so folded tiddlers won't be closed when using single-page mode.  Also, in checkURL(), if hash is a ''permaview'' (e.g., "#foo bar baz"), then display multiple tiddlers rather than attempting to display "foo bar baz" as a single tiddler
2008.03.05 2.7.0 added support for "SPM:" URL paramifier
2008.03.01 2.6.0 in hijack of displayTiddler(), added 'title' argument to closeAllTiddlers() so that target tiddler isn't closed-and-reopened if it was already displayed.  Also, added config.options.chkSinglePageAutoScrolloption to bypass automatic 'scroll into view' logic (note: core still does it's own ensureVisible() handling)
2007.12.22 2.5.3 in checkLastURL(), use decodeURIComponent() instead of decodeURI so that tiddler titles with commas (and/or other punctuation) are correctly handled.
2007.10.26 2.5.2 documentation cleanup
2007.10.08 2.5.1 in displayTiddler(), when using single-page or top-of-page mode, scrollTo(0,0) to ensure that page header is in view.
2007.09.13 2.5.0 for TPM/BPM modes, don't force tiddler to redisplay if already shown.  Allows transition between view/edit or collapsed/view templates, without repositioning displayed tiddler.
2007.09.12 2.4.0 added option to disable automatic permalink feature.  Also, Safari is now excluded from permalinking action to avoid bug where tiddlers don't display after hash is updated.
2007.03.03 2.3.1 fix typo when adding BPM option to AdvancedOptions (prevented checkbox from appearing)
2007.03.03 2.3.0 added support for BottomOfPageMode (BPM) based on request from DaveGarbutt
2007.02.06 2.2.3 in Story.prototype.displayTiddler(), use convertUnicodeToUTF8() for correct I18N string handling when creating URL hash string from tiddler title (based on bug report from BidiX)
2007.01.08 2.2.2 use apply() to invoke hijacked core functions
2006.07.04 2.2.1 in hijack for displayTiddlers(), suspend TPM as well as SPM so that DefaultTiddlers displays in the correct order.
2006.06.01 2.2.0 added chkTopOfPageMode (TPM) handling
2006.02.04 2.1.1 moved global variable declarations to config.* to avoid FireFox 1.5.0.1 crash bug when assigning to globals
2005.12.27 2.1.0 hijack displayTiddlers() so that SPM can be suspended during startup while displaying the DefaultTiddlers (or #hash list).  Also, corrected initialization for undefined SPM flag to "false", so default behavior is to display multiple tiddlers
2005.12.27 2.0.0 Update for TW2.0
2005.11.24 1.1.2 When the back and forward buttons are used, the page now changes to match the URL.  Based on code added by Clint Checketts
2005.10.14 1.1.1 permalink creation now calls encodeTiddlyLink() to handle tiddler titles with spaces in them
2005.10.14 1.1.0 added automatic setting of window title and location bar ('auto-permalink').  feature suggestion by David Dickens.
2005.10.09 1.0.1 combined documentation and code in a single tiddler
2005.08.15 1.0.0 Initial Release
<<<

Homepage of Praveen
/*{{{*/
.header {
        height: 70px;
}

.headerShadow, .headerForeground {
        height: 40px;
        padding-top: 12px;
}

body {
	background: [[ColorPalette::TertiaryLight]];
}

/* Remove underlining of external url in MainMenu */
#mainMenu a {
   text-decoration: none;
}

/* Title of each tiddler */
.title { font-size: 180%; }

/* more subtle tiddler subtitle */
.subtitle {
	padding:0px;
	margin:0px;
	padding-left:0.5em;
	font-size: 90%;
	color: [[ColorPalette::TertiaryMid]];
        display: none;
}

/* give tiddlers 3d style border and explicit background */
.tiddler {
	background: [[ColorPalette::Background]];
	border-right: 2px [[ColorPalette::TertiaryMid]] solid;
	border-bottom: 2px [[ColorPalette::TertiaryMid]] solid;
	margin-bottom: 1em;
	padding-bottom: 2em;
}

/* This fixes a problem with the tabs slider */
#sidebarTabs .button {
	margin:0em 0.2em;
	padding:0.2em 0.3em;
	display:block;
}

/* make options slider look nicer */
#sidebarOptions .sliderPanel {
	border:solid 1px [[ColorPalette::PrimaryLight]];
}

/* the borders look wrong with the body background */
#sidebar .button {
	border-style: none;
}

/*}}}*/
/***
This is a sample style definition to demonstrate CustomCssClass formatting
***/
/*{{{*/
.wrappingClass {color: #666; background: #bbb;}
[[ChunkyButtonStyle]]
/*}}}*/
/*{{{*/
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, .headerForeground, .siteSubtitle,
.siteTitle, .tagging, .tagged, #backstageButton, #backstageArea {display: none !important;}
#displayArea {margin: 1em 1em 0em;}
noscript {display:none;} /* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
}
/*}}}*/
You will find pdf files of talks below. If you cannot get any file, then please write to me.

# ``A positive meshless method for hyperbolic equations", First ASIAD       (Inhouse) Symposium, Dept. of Aerospace Engg., Indian Institute of Science,     Bangalore, 5 September, 2004.
# Finite volume method, National Workshop on Advances in Computational Fluid Flow and Heat Transfer, Annamalai University, October, 2005. ([[pdf|slides/annamalai.pdf]])
# ``Grid-free Methods for Compressible Flows", Fluid Dynamics  Colloquium of Jawaharlal Nehru Center for Advanced Scientific Research, Bangalore, 9 November, 2005. ([[pdf|slides/jnc2005.pdf]])
# ``Adjoint code development and optimization using automatic differentiation", CTFD Seminar, National Aerospace Laboratories, Bangalore, 31 March, 2006.
# Lectures on basics of PDE and finite volume method to engineers from ~Kirloskar-Copeland at CMMACS, Bangalore, April 2006. ([[pdf|slides/cmmacs.pdf]])
# ``Aerodynamic shape optimization using particle swarms and metamodels",   Mathematics Colloquium of ~TIFR-CAM, Bangalore, September 30, 2008. ([[pdf|slides/tifrcam-30sep2008.pdf]])
# ``Adjoint approach to optimization using automatic differentiation", ~Indo-German workshop/lecture Series on Computational Models and Methods Driven by Industrial Problems, Dept. of Math., IIT Madras, December 24, 2008. ([[pdf|slides/adjoint-iitm-nov2008.pdf]])
# ``Aerodynamic shape optimization using particle swarms and metamodels",  ~Indo-German workshop/lecture Series on Computational Models and Methods Driven by Industrial Problems, Dept. of Math., IIT Madras, December 25, 2008. ([[pdf|slides/pso-iitm-nov2008.pdf]])
# Two lectures given to bachelors students at St. Joseph College on ``Numerical methods for partial differential equations", as part of a workshop  on mathematics sponsored by Indian Academy of Science, 31 Jan 2009. ([[Lecture 1|slides/pde1.pdf]]), ([[Lecture 2|slides/pde2.pdf]])
# ``Efficient aerodynamic shape optimization using particle swarms and metamodels", Aeronautical Development Agency, Bangalore, 16 July 2009.
# ``Numerical shape optimization, adjoint equations and their uses", Inhouse sumposium of ~TIFR-CAM, 17-18 August, 2009. ([[pdf|slides/tifrcam-18aug2009.pdf]])
# ``Discrete adjoint approach to ~CFD-based optimization", ~Indo-German       Conference on PDE, Scientific Computing and Optimization in Applications, IIT Kanpur, 7-9 October, 2009. ([[pdf|slides/iitkan-oct2009.pdf]])
# ``Numerical shape optimization", IMI Workshop on Control and Inverse      Problems, Dept. of Mathematics, IISc, Bangalore, 1-15 December, 2009. ([[pdf|slides/imi-dec2009.pdf]])
# "Adjoint approach to optimization", Health, Safety and Environment Group, BARC, 6 October, 2010. ([[pdf|slides/barc-adjopt-6oct2010.pdf]])
# "Accurate uncertainty quantification using adjoint solutions", Health, Safety and Environment Group, BARC, 7 October, 2010. ([[pdf|slides/barc-adjuq-7oct2010.pdf]])
Create the file {{{$HOME/.forward}}} with following content

{{{
|/usr/bin/procmail
}}}

Add following lines to your {{{$HOME/.procmailrc}}} file

{{{
PATH=/usr/bin:/usr/local/bin:/usr/sbin:/sbin:$HOME
MAILDIR=$HOME/mail
LOGFILE=$HOME/.procmail.log
SHELL=/bin/bash

# (250 * 1024 = 256000 bytes) are processed by SpamAssassin. Most spam
# isn't bigger than a few k and working with big messages can bring
# SpamAssassin to its knees.
#
# The lock file ensures that only 1 spamassassin invocation happens
# at 1 time, to keep the load down.
#
:0fw: spamassassin.lock
* < 256000
| spamassassin

# If score greater than 5, file into separate folder "Spam"
:0:
* ^X-Spam-Level: \*\*\*\*\*
Spam
}}}

The default scores for Spamassassin are not good since we are using a somewhat older version. Set some scores in {{{$HOME/.spamassassin/user_prefs}}} as follows

{{{
# How many hits before a message is considered spam.
required_score         5.0

# Dont add anything to subject
rewrite_subject        0

# Encapsulate spam in an attachment (0=no, 1=yes, 2=safe)
report_safe            0

# Enable the Bayes system
use_bayes              1

# Enable Bayes auto-learning
bayes_auto_learn       1

# Enable or disable network checks
skip_rbl_checks        0
use_razor2             1
use_dcc                1
use_pyzor              1

# Change some scores
score FH_DATE_PAST_20XX  0.0

# DNS_FROM_OPENWHOIS removed in SpamAssassin 3.3 because Status of 
# bl.open-whois.org: DEAD
score DNS_FROM_OPENWHOIS 0.0

score DEAR_SOMETHING     0.0
}}}
This is my official website. If you are looking for my personal website, click [[here|http://pc.freeshell.org]].

I am a faculty member in the Center for Applicable Mathematics, Tata Institute of Fundamental Research, Bangalore, or ~TIFR-CAM for short. We are part of the [[TIFR, Mumbai|http://www.tifr.res.in]].
[>img[images/naca1.jpg]]
My research interests are mainly in the numerical solution of PDE and their applications. In particular, I am interested in problems and applications in aerodynamics and related fields.

!! Workshop on FEM
We will be organizing an instructional workshop on theory and practice of FEM in July 2012. The workshop will have an emphasis on computations using Fenics. For more information, [[click here|http://math.tifrbng.res.in/~fem2012]].