<!--{{{-->
<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]];}

.sparkline {background:[[ColorPalette::PrimaryPale]]; border:0;}
.sparktick {background:[[ColorPalette::PrimaryDark]];}

.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:0px; top:0px;}

.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:0px 3px 0px 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:0px; padding-bottom:0px;}

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

.sparkline {line-height:1em;}
.sparktick {outline:0;}

.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>>
|''Type:''|file|
|''URL:''|http://www.tiddlytools.com/#DisableWikiLinksPlugin|
|''Workspace:''|(default)|

This tiddler was automatically created to record the details of this server
Various organisations in Scotland coordinated by the Royal Society of
Edinburgh are holding a series of workshops and events to celebrate
the discovery/development of logarithms by John Napier in Edinburgh in
1614. His work Mirifici Logarithmorum Canonis Descriptio (1614) can be found at http://www.17centurymaths.com/contents/napiercontents.html
and other places. A mathematical biography of Napier is provided by JJ O'Connor and EF Robertson on the St Andrews MacTutor History of Mathematics site
http://www-history.mcs.st-and.ac.uk/Biographies/Napier.html
The algorithms and computing devices that Napier produced and inspired were the state of the art in general scientific computing until modern computers took over relatively
recently.

The last such celebration was in 1914 and run by the EMS.
http://www-groups.dcs.st-and.ac.uk/~history/Extras/EMS_1914_Colloquium.html
It was overshadowed by the outbreak of WWI over the following days.
This time we hope for a more peaceful celebration.

Napier 400 - Numerical Algorithms and Intelligent Software Symposium,
Speakers: Martin Gander (Geneva), Mike Giles (Oxford), Nick Higham
(Manchester), Hilary Weller (Reading), Margaret Wright (Courant Institute)
2nd April 2014 at ICMS in Edinburgh
Registration and full details at http://icms.org.uk/workshops/NAISNapier400

Computation in Finance and Insurance, post Napier,
3rd April 2014 at the Royal Society of Edinburgh
Registration and full details at http://www.royalsoced.org.uk/events/event.php?id=344

John Napier: the Historical Legacy, 4th Apri 2014.
Unfortunately this is already fully subscribed.

Other Napier 400 events, including a special display in the National Museum of Scotland, are listed at http://tiny.cc/cj3wax
For the schedule of talks, see [[here|http://mathsevents.cf.ac.uk/bamc2014/]]
For the schedule of talks, see [[here|http://people.bath.ac.uk/masas/naday_28jan2013.html]]
More information to follow soon.
Registration is now open for the 24th Biennial Conference on Numerical Analysis in Strathclyde.
For more information see http://www.mathstat.strath.ac.uk/naconf.
This meeting will be hosted by the Department of Mathematics and Statistics at the University of Strathclyde and will be held from June 25th to 28th 2013.

The conference is open to all researchers in the field, and you are invited to contribute a talk on your current work. Young researchers and PhD students will find the environment particularly welcoming.

For more information, see [[here|http://numericalanalysisconference.org.uk/]]
Date: Monday 10 September - Wednesday 12 September 2012
Location: University of Birmingham

The IMA and the University of Birmingham are pleased to announce the 3rd IMA Conference on Numerical Linear Algebra and Optimisation.
Scope

The success of modern codes for large-scale optimisation is heavily dependent on the use of effective tools of numerical linear algebra. On the other hand, many problems in numerical linear algebra lead to linear, nonlinear or semidefinite optimisation problems. The purpose of the conference is to bring together researchers from both communities and to find and communicate points and topics of common interest.

Conference topics include any subject that could be of interest to both communities, such as:

    * Direct and iterative methods for large sparse linear systems.
    * Eigenvalue computation and optimisation.
    * Large-scale nonlinear and semidefinite programming.
    * Effect of round-off errors, stopping criteria, embedded iterative procedures.
    * Optimisation issues for matrix polynomials.
    * Fast matrix computations.
    * Compressed/sparse sensing.
    * PDE-constrained optimisation.
    * Applications and real time optimisation.

Organising Committee Members

Michal Kocvara, University of Birmingham, SIAM Representative (chair)
Daniel Loghin, University of Birmingham (co-chair)
Jacek Gondzio, University of Edinburgh
Nick Gould, Rutherford Appleton Laboratory
Jennifer Scott, Rutherford Appleton Laboratory
Andy Wathen, University of Oxford

Registration is now open

More information: 
http://www.ima.org.uk/conferences/conferences_calendar/numerical_linear_algebra_and_optimisation.cfm



If you have any queries regarding this conference or would like to register your interest, please contact Lizzi Lake, Conference Officer, E-mail:  [[conferences@ima.org.uk|mailto:conferences@ima.org.uk]]. Tel: +44 (0) 1702 354020, Institute of Mathematics and its Applications, Catherine Richards House, 16 Nelson Street, Southend-on-Sea, Essex, SS1 1EF.
SCOR 2012
3rd Student Conference on Operational Research
20-22 April  2012, Nottingham, UK
www.scor2012.com

Building on the success of the previous Student Conferences on Operational Research, we are proud to announce the 3rd edition, SCOR 2012.

PhD students from all European Universities studying Operational Research, Management Science or a related field are kindly invited to submit an abstract for presentation at the conference. The purpose of SCOR 2012 is to provide a friendly environment for doctoral candidates to develop their presentation skills, to receive constructive feedback on their work and to meet other students with similar interests.

Deadline for abstract submission: Friday 17th February 2012

Presenters will also be invited to submit a paper (no more than 10 pages) on their work to be published electronically as part of the SCOR 2012 proceedings. This will be available in the Dagstuhl OpenAccess Series in Informatics (OASIcs).

Chairman: Stefan Ravizza, University of Nottingham, smr@cs.nott.ac.uk
9th Annual Workshop on Numerical Methods for Problems with Layer Phenomena will be held this year 3-4 February 2011at Dublin City University; see

http://webpages.dcu.ie/~oriordae/dcu_workshop.htm

A two day workshop is being organised by the School of Mathematical Sciences 
in Dublin City University, Dublin, Ireland. The aim of the workshop is to 
bring together people, in the mathematics and general scientific community, 
who have particular interests in the development and applications of 
numerical methods for problems that exhibit layer phenomena, such as 
boundary/interior layers in fluid flow and other applications. 

REGISTRATION DEADLINE: 15th December 2010 
[[Rules of Procedure]]
[[Annual Reports]]
[[Financial Reports]]
Advances in Large-Scale Optimization
(A NAIS Workshop, Trek and Colloquium)

Headline speaker: Prof Yurii Nesterov (Louvain, Belgium)

Other speakers include: Schmidt (INRIA), Richtarik (Edinburgh), D'Aspremont (Ecole Polytechnique), Gondzio (Edinburgh), Kocvara (Birmingham), Cartis (Edinburgh)

Website with full info:

http://www.maths.ed.ac.uk/~prichtar/Advances_in_Large_Scale_Optimization/index.html

Registration is *free*.
The next Annual SIAM UKIE Meeting will take place  ''8th January 2015 at the University of Bath''. There will be an contiguous IMA meeting on Applied Mathematics on ''9th January 2015 at the University of Bath'' to further strengthen the links between the two societies. We encourage participants to attend both meetings. Further information on both meetings will appear here late summer/autumn 2014.

!!!Location

[[University of Bath|http://www.bath.ac.uk/]] 

!!!Confirmed invited speakers

Will be announced in autumn 2014.

!!!Schedule

Will be announced in autumn 2014.

!!!

An overview of past meetings is available [[here|Past Meetings]].

!!!
* [[2013 Annual Report|annual_reports/siamukie.rep13.txt]]
* [[2012 Annual Report|annual_reports/siamukie.rep12.txt]]
* [[2011 Annual Report|annual_reports/siamukie.rep11.txt]]
* [[2010 Annual Report|annual_reports/siamukie.rep10.txt]]
* [[2009 Annual Report|annual_reports/siamukie.rep09.txt]]
* [[2008 Annual Report|annual_reports/siamukie.rep08.txt]]
* [[2007 Annual Report|annual_reports/siamukie.rep07.txt]]
* [[2006 Annual Report|annual_reports/siamukie.rep06.txt]]
* [[2005 Annual Report|annual_reports/siamukie.rep05.txt]]
* [[2004 Annual Report|annual_reports/siamukie.rep04.txt]]
* [[2003 Annual Report|annual_reports/siamuk.rep03.txt]]
* [[2002 Annual Report|annual_reports/siamuk.rep02.txt]]
* [[2001 Annual Report|annual_reports/siamuk.rep01.txt]]
* [[2000 Annual Report|annual_reports/siamuk.rep00.txt]]
* [[1999 Annual Report|annual_reports/siamuk.rep99.txt]]
* [[1998 Annual Report|annual_reports/siamuk.rep98.txt]]


Title: Computing the Schrödinger equation with no fear of commutators

Abstract: In this talk I report  recent work on the solution of the linear
Schrödinger equation (LSE) by exponential splitting in a manner that
separates different frequency scales. The main problem in discretizing LSE
originates in the presence of a very small parameter, which generates
exceedingly rapid oscillation in the solution. However, it is possible to
exploit the features of the graded free Lie algebra spanned by the Laplacian
and by multiplication with the interaction potential to split the evolution
operator in a symmetric Zassenhaus splitting so that the arguments of
consecutive exponentials constitute an asymptotic expansion in the small
parameter. Once we replace the Laplacian by an appropriate differentiation
matrix, this results in a high-order algorithm whose computational cost
scales like O(N log N), where N is the number of degrees of freedom and
whose error is uniform in the small parameter.
The BATH/RAL Numerical Analysis Day is taking place this year at the University of Bath, Tuesday 28 September, starting from 10:15. All are welcome. There is no attendance fee.

Further information can be found [[here|http://people.bath.ac.uk/masas/naday_28sept10.html]].
This conference will take place at the University of Bath on 1st and 2nd July 2013 and it will celebrate Alastair's contributions to Bifurcation Theory, Numerical Linear Algebra and its Applications. All are welcome and there will be no registration fee. A programme will be posted here in due course. 

For more info see [[here|http://people.bath.ac.uk/mamamf/BTNAA13.html]]
On Tuesday 22nd June 2010 at a ceremony in the Schloss Charlottenburg, Berlin, [[Professor Charlie Elliott|http://www2.warwick.ac.uk/fac/sci/maths/people/staff/charles_elliott]]  was a recipient of the [[Humboldt-Forschungspreis|http://www.humboldt-foundation.de/web/humboldt-award.html]] (Humboldt Research Award) from the Alexander von Humboldt Foundation in Germany

The award is granted in recognition of a researcher's lifetime achievements to academics whose fundamental discoveries, new theories, or insights have had a significant impact on their own discipline and who are expected to continue producing cutting-edge achievements in the future. Elliott was cited for his outstanding contributions to the analysis and numerical analysis of nonlinear partial differential equations, proving first existence and uniqueness results, developing and analysing new numerical schemes and applying his theoretical results to practically relevant problems from material science, fluid dynamics, theoretical biology and others. Award winners are invited to cooperate on research projects of their own choice with colleagues at a research institution in Germany. Elliott plans to visit [[Prof H. Garcke (Regensburg)|http://www.mathematik.uni-regensburg.de/Mat8/homepage]] , [[Prof. K-H Hoffmann (TU Munich)|http://www-m6.ma.tum.de/Lehrstuhl/KarlHeinzHoffmann]]  and [[Prof R. Kornhuber (Free University Berlin)|http://numerik.mi.fu-berlin.de/Forschung/AG-Kornhuber]] .
Title: Microlocal analysis of radar imaging of a dynamic reflectivity function.

Abstract: We develop a model for scattering of electromagnetic waves from
a moving object. The moving object is modelled as a time-dependent
reflectivity function of space-time; $V(x,t)$. The scattered wave field $d$
is approximately $FV$, where $F$ is a Fourier integral operator, related to
a circle transform in integral geometry. Analysis of the backprojected image
$F^*d$ ($F^*$ is the formal $L^2$ adjoint of $F$) of the reflectivity
function shows that artifacts will be present in this image and that they
can be partially suppressed by pre-processing the data with a suitable
pseudo-differential operator.  The microlocal analysis tools in the talk
draw on some nice ideas from singularity theory (folds and blowdowns in
particular) and symplectic geometry.
Please send any comments about this webpage to [[Melina Freitag|mailto:m.freitag@maths.bath.ac.uk]] (m.freitag@maths.bath.ac.uk).
Title:  Optimal Newton-type algorithms for non convex smooth optimisation

Abstract:  This talk addresses global rates of convergence and the
worst-case evaluation complexity of methods for non convex optimisation
problems. We show that the classical steepest-descent and Newton’s methods
for unconstrained nonconvex optimization under standard assumptions may both
require a number of iterations and function evaluations arbitrarily close to
the steepest-descent’s global worst-case complexity bound. This implies that
the latter upper bound is essentially tight for steepest descent and that
Newton’s method may be as slow as the steepest-descent method in the worst
case. Then the cubic regularization of Newton’s method (Griewank (1981),
Nesterov & Polyak (2006)) is considered and extended to large-scale
problems, while preserving the same order of its improved worst-case
complexity (by comparison to that of steepest-descent). We further show that
the cubic regularization approach is, in fact, optimal from a worst-case
complexity point of view amongst a wide class of second-order methods for
nonconvex optimization. We also discuss extending the power of cubic
regularization to constrained optimization and to a practical global
optimization algorithm. This is joint work with Jaroslav Fowkes (Edinburgh),
Nick Gould (Rutherford Appleton Laboratory) and Philippe Toint (University
of Namur, Belgium).
[[Welcome]]
//{{{
config.options.chkDisableWikiLinks=true;
config.options.chkAllowLinksFromShadowTiddlers=true;
//}}}
/***
|Name|DisableWikiLinksPlugin|
|Source|http://www.TiddlyTools.com/#DisableWikiLinksPlugin|
|Version|1.6.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|selectively disable TiddlyWiki's automatic ~WikiWord linking behavior|
This plugin allows you to disable TiddlyWiki's automatic ~WikiWord linking behavior, so that WikiWords embedded in tiddler content will be rendered as regular text, instead of being automatically converted to tiddler links.  To create a tiddler link when automatic linking is disabled, you must enclose the link text within {{{[[...]]}}}.
!!!!!Usage
<<<
You can block automatic WikiWord linking behavior for any specific tiddler by ''tagging it with<<tag excludeWikiWords>>'' (see configuration below) or, check a plugin option to disable automatic WikiWord links to non-existing tiddler titles, while still linking WikiWords that correspond to existing tiddlers titles or shadow tiddler titles.  You can also block specific selected WikiWords from being automatically linked by listing them in [[DisableWikiLinksList]] (see configuration below), separated by whitespace.  This tiddler is optional and, when present, causes the listed words to always be excluded, even if automatic linking of other WikiWords is being permitted.  

Note: WikiWords contained in default ''shadow'' tiddlers will be automatically linked unless you select an additional checkbox option lets you disable these automatic links as well, though this is not recommended, since it can make it more difficult to access some TiddlyWiki standard default content (such as AdvancedOptions or SideBarTabs)
<<<
!!!!!Configuration
<<<
<<option chkDisableWikiLinks>> Disable ALL automatic WikiWord tiddler links
<<option chkAllowLinksFromShadowTiddlers>> ... except for WikiWords //contained in// shadow tiddlers
<<option chkDisableNonExistingWikiLinks>> Disable automatic WikiWord links for non-existing tiddlers
Disable automatic WikiWord links for words listed in: <<option txtDisableWikiLinksList>>
Disable automatic WikiWord links for tiddlers tagged with: <<option txtDisableWikiLinksTag>>
<<<
!!!!!Revisions
<<<
2008.07.22 [1.6.0] hijack tiddler changed() method to filter disabled wiki words from internal links[] array (so they won't appear in the missing tiddlers list)
2007.06.09 [1.5.0] added configurable txtDisableWikiLinksTag (default value: "excludeWikiWords") to allows selective disabling of automatic WikiWord links for any tiddler tagged with that value.
2006.12.31 [1.4.0] in formatter, test for chkDisableNonExistingWikiLinks
2006.12.09 [1.3.0] in formatter, test for excluded wiki words specified in DisableWikiLinksList
2006.12.09 [1.2.2] fix logic in autoLinkWikiWords() (was allowing links TO shadow tiddlers, even when chkDisableWikiLinks is TRUE).  
2006.12.09 [1.2.1] revised logic for handling links in shadow content
2006.12.08 [1.2.0] added hijack of Tiddler.prototype.autoLinkWikiWords so regular (non-bracketed) WikiWords won't be added to the missing list
2006.05.24 [1.1.0] added option to NOT bypass automatic wikiword links when displaying default shadow content (default is to auto-link shadow content)
2006.02.05 [1.0.1] wrapped wikifier hijack in init function to eliminate globals and avoid FireFox 1.5.0.1 crash bug when referencing globals
2005.12.09 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.DisableWikiLinksPlugin= {major: 1, minor: 6, revision: 0, date: new Date(2008,7,22)};

if (config.options.chkDisableNonExistingWikiLinks==undefined) config.options.chkDisableNonExistingWikiLinks= false;
if (config.options.chkDisableWikiLinks==undefined) config.options.chkDisableWikiLinks=false;
if (config.options.txtDisableWikiLinksList==undefined) config.options.txtDisableWikiLinksList="DisableWikiLinksList";
if (config.options.chkAllowLinksFromShadowTiddlers==undefined) config.options.chkAllowLinksFromShadowTiddlers=true;
if (config.options.txtDisableWikiLinksTag==undefined) config.options.txtDisableWikiLinksTag="excludeWikiWords";

// find the formatter for wikiLink and replace handler with 'pass-thru' rendering
initDisableWikiLinksFormatter();
function initDisableWikiLinksFormatter() {
	for (var i=0; i<config.formatters.length && config.formatters[i].name!="wikiLink"; i++);
	config.formatters[i].coreHandler=config.formatters[i].handler;
	config.formatters[i].handler=function(w) {
		// supress any leading "~" (if present)
		var skip=(w.matchText.substr(0,1)==config.textPrimitives.unWikiLink)?1:0;
		var title=w.matchText.substr(skip);
		var exists=store.tiddlerExists(title);
		var inShadow=w.tiddler && store.isShadowTiddler(w.tiddler.title);
		// check for excluded Tiddler
		if (w.tiddler && w.tiddler.isTagged(config.options.txtDisableWikiLinksTag))
			{ w.outputText(w.output,w.matchStart+skip,w.nextMatch); return; }
		// check for specific excluded wiki words
		var t=store.getTiddlerText(config.options.txtDisableWikiLinksList);
		if (t && t.length && t.indexOf(w.matchText)!=-1)
			{ w.outputText(w.output,w.matchStart+skip,w.nextMatch); return; }
		// if not disabling links from shadows (default setting)
		if (config.options.chkAllowLinksFromShadowTiddlers && inShadow)
			return this.coreHandler(w);
		// check for non-existing non-shadow tiddler
		if (config.options.chkDisableNonExistingWikiLinks && !exists)
			{ w.outputText(w.output,w.matchStart+skip,w.nextMatch); return; }
		// if not enabled, just do standard WikiWord link formatting
		if (!config.options.chkDisableWikiLinks)
			return this.coreHandler(w);
		// just return text without linking
		w.outputText(w.output,w.matchStart+skip,w.nextMatch)
	}
}

Tiddler.prototype.coreAutoLinkWikiWords = Tiddler.prototype.autoLinkWikiWords;
Tiddler.prototype.autoLinkWikiWords = function()
{
	// if all automatic links are not disabled, just return results from core function
	if (!config.options.chkDisableWikiLinks)
		return this.coreAutoLinkWikiWords.apply(this,arguments);
	return false;
}

Tiddler.prototype.disableWikiLinks_changed = Tiddler.prototype.changed;
Tiddler.prototype.changed = function()
{
	this.disableWikiLinks_changed.apply(this,arguments);
	// remove excluded wiki words from links array
	var t=store.getTiddlerText(config.options.txtDisableWikiLinksList,"").readBracketedList();
	if (t.length) for (var i=0; i<t.length; i++)
		if (this.links.contains(t[i]))
			this.links.splice(this.links.indexOf(t[i]),1);
};
//}}}
In this year's EPSRC Fellowship round [[Francoise Tisseur|http://www.maths.manchester.ac.uk/~ftisseur/]]  from the University of Manchester was awarded a highly prestigious Leadership Fellowship to work on "Nonlinear Eigenvalue Problems: Theory and Numerics".

Nonlinear eigenvalue problems arise in a wide variety of science and engineering applications, and present many mathematical challenges. The project will explore new research directions in this area, bringing in ideas from geometric algebra and control theory. With the help of the research team Francoise Tisseur will develop theory and methods that enable the solution of new classes of emerging eigenproblems (e.g., rational) and more efficient and more accurate solution of existing problems. 
Dear members,

We are pleased to announce the Edinburgh SIAM Student Chapter Conference
2011 (http://www.ma.hw.ac.uk/siamstudentchapter/con2011.html) which will
take place at the International Centre for Mathematical Sciences (
ww.icms.org.uk) on February 1st starting at 12.00.

This year's conference will focus on the topics ''Operations Research &
Optimisation'' and ''PDE Modelling and Numerics''. For each topic we will have
three talks by local students and one plenary talk. The plenary talks will
be held by Prof Roger Fletcher FRS FRSE from the University of Dundee (OR &
Optimisation) and Dr Kevin Painter from Heriot-Watt University (PDE
Modelling & Numerics). Further, we will have an open poster session where
the best poster will be awarded a prize.

I hope that you will numerously attend our meeting. As lunch and coffee will
be provided we ask you to fill out the registration form on our webpage

http://www.ma.hw.ac.uk/siamstudentchapter/ .

We hope to see you all soon!

On behalf of the organising committee,

Martin Riedler
7th June 2012
Lecture Theatre C, James Clerk Maxwell Bulding,
King's Buildings, Edinburgh
Introduction

We are pleased to announce the third version of our annual Edinburgh SIAM Student Chapter Conference (ESSCC 2012). The conference will take place at James Clerk Maxwell Building, Kings Buildings, on June 7, starting at 13:00.

This year's conference will have four guest speakers presenting their work and views in fields ranging from signal processing to complex networks and from optimization models in finance to mobile applications.

Furthermore, we will have an open poster session where the best poster will be awarded a prize. If you have a poster, we encourage you to present it at the conference. If you do not, you still have time to prepare one and show it at the conference. Refreshments will be provided during the poster session.

For other SIAM chapter members we plan to partially subside travel expenses.

More information: 
http://www.edsiamchapter.co.uk/esscc2012
For more information, visit the website http://www.edsiamchapter.co.uk/esscc2013
//{{{
config.options.chkSinglePageMode=true;
//}}}
Title: Navier--Stokes--Fokker--Planck systems: analysis and approximation

Abstract:  The talk surveys recent results concerning the existence of
global weak solutions to a general class of bead-spring chain models,  which
arise from the kinetic theory of non homogeneous polymeric fluids. The class
of models under consideration involves the unsteady incompressible
Navier--Stokes equations with variable density and density-dependent dynamic
viscosity in a bounded domain in two or three space dimensions, for the
density, the velocity and the pressure of the fluid, with an elastic
extra-stress tensor appearing on the right-hand side of the momentum
equation. The extra-stress tensor stems from the random movement of the
polymer chains and is defined by the Kramers expression through the
associated probability density that satisfies a Fokker--Planck-type
parabolic equation, a crucial feature of which is the presence of a
centre-of-mass diffusion term and a nonlinear density-dependent drag
coefficient. We shall also discuss the computational challenges involved in
the approximate solution of the Fokker--Planck equation - a
high-dimensional transport-diffusion equation with degenerate diffusion.
The talk is based on a series of joint papers with John W. Barrett (Imperial
College London).
The section was set up in 1997 and financial reports are produced in November of each year (beginning November 1998)

* [[2013 Financial Report|finance_reports/siamukie.acc13.txt]]
* [[2012 Financial Report|finance_reports/siamukie.acc12.txt]]
* [[2011 Financial Report|finance_reports/siamukie.acc11.txt]]
* [[2010 Financial Report|finance_reports/siamukie.acc10.txt]]
* [[2009 Financial Report|finance_reports/siamukie.acc09.txt]]
* [[2008 Financial Report|finance_reports/siamukie.acc08.txt]]
* [[2007 Financial Report|finance_reports/siamukie.acc07.txt]]
* [[2006 Financial Report|finance_reports/siamukie.acc06.txt]]
* [[2005 Financial Report|finance_reports/siamukie.acc05.txt]]
* [[2004 Financial Report|finance_reports/siamukie.acc04.txt]]
* [[2003 Financial Report|finance_reports/siamuk.acc03.txt]]
* [[2002 Financial Report|finance_reports/siamuk.acc02.txt]]
* [[2001 Financial Report|finance_reports/siamuk.acc01.txt]]
* [[2000 Financial Report|finance_reports/siamuk.acc00.txt]]
* [[1999 Financial Report|finance_reports/siamuk.acc99.txt]]
* [[1998 Financial Report|finance_reports/siamuk.acc98.txt]]


/***
|''Name:''|ForEachTiddlerPlugin|
|''Version:''|1.0.8 (2007-04-12)|
|''Source:''|http://tiddlywiki.abego-software.de/#ForEachTiddlerPlugin|
|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|
|''Licence:''|[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]|
|''Copyright:''|&copy; 2005-2007 [[abego Software|http://www.abego-software.de]]|
|''TiddlyWiki:''|1.2.38+, 2.0|
|''Browser:''|Firefox 1.0.4+; Firefox 1.5; InternetExplorer 6.0|
!Description

Create customizable lists, tables etc. for your selections of tiddlers. Specify the tiddlers to include and their order through a powerful language.

''Syntax:'' 
|>|{{{<<}}}''forEachTiddler'' [''in'' //tiddlyWikiPath//] [''where'' //whereCondition//] [''sortBy'' //sortExpression// [''ascending'' //or// ''descending'']] [''script'' //scriptText//] [//action// [//actionParameters//]]{{{>>}}}|
|//tiddlyWikiPath//|The filepath to the TiddlyWiki the macro should work on. When missing the current TiddlyWiki is used.|
|//whereCondition//|(quoted) JavaScript boolean expression. May refer to the build-in variables {{{tiddler}}} and  {{{context}}}.|
|//sortExpression//|(quoted) JavaScript expression returning "comparable" objects (using '{{{<}}}','{{{>}}}','{{{==}}}'. May refer to the build-in variables {{{tiddler}}} and  {{{context}}}.|
|//scriptText//|(quoted) JavaScript text. Typically defines JavaScript functions that are called by the various JavaScript expressions (whereClause, sortClause, action arguments,...)|
|//action//|The action that should be performed on every selected tiddler, in the given order. By default the actions [[addToList|AddToListAction]] and [[write|WriteAction]] are supported. When no action is specified [[addToList|AddToListAction]]  is used.|
|//actionParameters//|(action specific) parameters the action may refer while processing the tiddlers (see action descriptions for details). <<tiddler [[JavaScript in actionParameters]]>>|
|>|~~Syntax formatting: Keywords in ''bold'', optional parts in [...]. 'or' means that exactly one of the two alternatives must exist.~~|

See details see [[ForEachTiddlerMacro]] and [[ForEachTiddlerExamples]].

!Revision history
* v1.0.8 (2007-04-12)
** Adapted to latest TiddlyWiki 2.2 Beta importTiddlyWiki API (introduced with changeset 2004). TiddlyWiki 2.2 Beta builds prior to changeset 2004 are no longer supported (but TiddlyWiki 2.1 and earlier, of cause)
* v1.0.7 (2007-03-28)
** Also support "pre" formatted TiddlyWikis (introduced with TW 2.2) (when using "in" clause to work on external tiddlers)
* v1.0.6 (2006-09-16)
** Context provides "viewerTiddler", i.e. the tiddler used to view the macro. Most times this is equal to the "inTiddler", but when using the "tiddler" macro both may be different.
** Support "begin", "end" and "none" expressions in "write" action
* v1.0.5 (2006-02-05)
** Pass tiddler containing the macro with wikify, context object also holds reference to tiddler containing the macro ("inTiddler"). Thanks to SimonBaird.
** Support Firefox 1.5.0.1
** Internal
*** Make "JSLint" conform
*** "Only install once"
* v1.0.4 (2006-01-06)
** Support TiddlyWiki 2.0
* v1.0.3 (2005-12-22)
** Features: 
*** Write output to a file supports multi-byte environments (Thanks to Bram Chen) 
*** Provide API to access the forEachTiddler functionality directly through JavaScript (see getTiddlers and performMacro)
** Enhancements:
*** Improved error messages on InternetExplorer.
* v1.0.2 (2005-12-10)
** Features: 
*** context object also holds reference to store (TiddlyWiki)
** Fixed Bugs: 
*** ForEachTiddler 1.0.1 has broken support on win32 Opera 8.51 (Thanks to BrunoSabin for reporting)
* v1.0.1 (2005-12-08)
** Features: 
*** Access tiddlers stored in separated TiddlyWikis through the "in" option. I.e. you are no longer limited to only work on the "current TiddlyWiki".
*** Write output to an external file using the "toFile" option of the "write" action. With this option you may write your customized tiddler exports.
*** Use the "script" section to define "helper" JavaScript functions etc. to be used in the various JavaScript expressions (whereClause, sortClause, action arguments,...).
*** Access and store context information for the current forEachTiddler invocation (through the build-in "context" object) .
*** Improved script evaluation (for where/sort clause and write scripts).
* v1.0.0 (2005-11-20)
** initial version

!Code
***/
//{{{

	
//============================================================================
//============================================================================
//		   ForEachTiddlerPlugin
//============================================================================
//============================================================================

// Only install once
if (!version.extensions.ForEachTiddlerPlugin) {

if (!window.abego) window.abego = {};

version.extensions.ForEachTiddlerPlugin = {
	major: 1, minor: 0, revision: 8, 
	date: new Date(2007,3,12), 
	source: "http://tiddlywiki.abego-software.de/#ForEachTiddlerPlugin",
	licence: "[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]",
	copyright: "Copyright (c) abego Software GmbH, 2005-2007 (www.abego-software.de)"
};

// For backward compatibility with TW 1.2.x
//
if (!TiddlyWiki.prototype.forEachTiddler) {
	TiddlyWiki.prototype.forEachTiddler = function(callback) {
		for(var t in this.tiddlers) {
			callback.call(this,t,this.tiddlers[t]);
		}
	};
}

//============================================================================
// forEachTiddler Macro
//============================================================================

version.extensions.forEachTiddler = {
	major: 1, minor: 0, revision: 8, date: new Date(2007,3,12), provider: "http://tiddlywiki.abego-software.de"};

// ---------------------------------------------------------------------------
// Configurations and constants 
// ---------------------------------------------------------------------------

config.macros.forEachTiddler = {
	 // Standard Properties
	 label: "forEachTiddler",
	 prompt: "Perform actions on a (sorted) selection of tiddlers",

	 // actions
	 actions: {
		 addToList: {},
		 write: {}
	 }
};

// ---------------------------------------------------------------------------
//  The forEachTiddler Macro Handler 
// ---------------------------------------------------------------------------

config.macros.forEachTiddler.getContainingTiddler = function(e) {
	while(e && !hasClass(e,"tiddler"))
		e = e.parentNode;
	var title = e ? e.getAttribute("tiddler") : null; 
	return title ? store.getTiddler(title) : null;
};

config.macros.forEachTiddler.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
	// config.macros.forEachTiddler.traceMacroCall(place,macroName,params,wikifier,paramString,tiddler);

	if (!tiddler) tiddler = config.macros.forEachTiddler.getContainingTiddler(place);
	// --- Parsing ------------------------------------------

	var i = 0; // index running over the params
	// Parse the "in" clause
	var tiddlyWikiPath = undefined;
	if ((i < params.length) && params[i] == "in") {
		i++;
		if (i >= params.length) {
			this.handleError(place, "TiddlyWiki path expected behind 'in'.");
			return;
		}
		tiddlyWikiPath = this.paramEncode((i < params.length) ? params[i] : "");
		i++;
	}

	// Parse the where clause
	var whereClause ="true";
	if ((i < params.length) && params[i] == "where") {
		i++;
		whereClause = this.paramEncode((i < params.length) ? params[i] : "");
		i++;
	}

	// Parse the sort stuff
	var sortClause = null;
	var sortAscending = true; 
	if ((i < params.length) && params[i] == "sortBy") {
		i++;
		if (i >= params.length) {
			this.handleError(place, "sortClause missing behind 'sortBy'.");
			return;
		}
		sortClause = this.paramEncode(params[i]);
		i++;

		if ((i < params.length) && (params[i] == "ascending" || params[i] == "descending")) {
			 sortAscending = params[i] == "ascending";
			 i++;
		}
	}

	// Parse the script
	var scriptText = null;
	if ((i < params.length) && params[i] == "script") {
		i++;
		scriptText = this.paramEncode((i < params.length) ? params[i] : "");
		i++;
	}

	// Parse the action. 
	// When we are already at the end use the default action
	var actionName = "addToList";
	if (i < params.length) {
	   if (!config.macros.forEachTiddler.actions[params[i]]) {
			this.handleError(place, "Unknown action '"+params[i]+"'.");
			return;
		} else {
			actionName = params[i]; 
			i++;
		}
	} 
	
	// Get the action parameter
	// (the parsing is done inside the individual action implementation.)
	var actionParameter = params.slice(i);


	// --- Processing ------------------------------------------
	try {
		this.performMacro({
				place: place, 
				inTiddler: tiddler,
				whereClause: whereClause, 
				sortClause: sortClause, 
				sortAscending: sortAscending, 
				actionName: actionName, 
				actionParameter: actionParameter, 
				scriptText: scriptText, 
				tiddlyWikiPath: tiddlyWikiPath});

	} catch (e) {
		this.handleError(place, e);
	}
};

// Returns an object with properties "tiddlers" and "context".
// tiddlers holds the (sorted) tiddlers selected by the parameter,
// context the context of the execution of the macro.
//
// The action is not yet performed.
//
// @parameter see performMacro
//
config.macros.forEachTiddler.getTiddlersAndContext = function(parameter) {

	var context = config.macros.forEachTiddler.createContext(parameter.place, parameter.whereClause, parameter.sortClause, parameter.sortAscending, parameter.actionName, parameter.actionParameter, parameter.scriptText, parameter.tiddlyWikiPath, parameter.inTiddler);

	var tiddlyWiki = parameter.tiddlyWikiPath ? this.loadTiddlyWiki(parameter.tiddlyWikiPath) : store;
	context["tiddlyWiki"] = tiddlyWiki;
	
	// Get the tiddlers, as defined by the whereClause
	var tiddlers = this.findTiddlers(parameter.whereClause, context, tiddlyWiki);
	context["tiddlers"] = tiddlers;

	// Sort the tiddlers, when sorting is required.
	if (parameter.sortClause) {
		this.sortTiddlers(tiddlers, parameter.sortClause, parameter.sortAscending, context);
	}

	return {tiddlers: tiddlers, context: context};
};

// Returns the (sorted) tiddlers selected by the parameter.
//
// The action is not yet performed.
//
// @parameter see performMacro
//
config.macros.forEachTiddler.getTiddlers = function(parameter) {
	return this.getTiddlersAndContext(parameter).tiddlers;
};

// Performs the macros with the given parameter.
//
// @param parameter holds the parameter of the macro as separate properties.
//				  The following properties are supported:
//
//						place
//						whereClause
//						sortClause
//						sortAscending
//						actionName
//						actionParameter
//						scriptText
//						tiddlyWikiPath
//
//					All properties are optional. 
//					For most actions the place property must be defined.
//
config.macros.forEachTiddler.performMacro = function(parameter) {
	var tiddlersAndContext = this.getTiddlersAndContext(parameter);

	// Perform the action
	var actionName = parameter.actionName ? parameter.actionName : "addToList";
	var action = config.macros.forEachTiddler.actions[actionName];
	if (!action) {
		this.handleError(parameter.place, "Unknown action '"+actionName+"'.");
		return;
	}

	var actionHandler = action.handler;
	actionHandler(parameter.place, tiddlersAndContext.tiddlers, parameter.actionParameter, tiddlersAndContext.context);
};

// ---------------------------------------------------------------------------
//  The actions 
// ---------------------------------------------------------------------------

// Internal.
//
// --- The addToList Action -----------------------------------------------
//
config.macros.forEachTiddler.actions.addToList.handler = function(place, tiddlers, parameter, context) {
	// Parse the parameter
	var p = 0;

	// Check for extra parameters
	if (parameter.length > p) {
		config.macros.forEachTiddler.createExtraParameterErrorElement(place, "addToList", parameter, p);
		return;
	}

	// Perform the action.
	var list = document.createElement("ul");
	place.appendChild(list);
	for (var i = 0; i < tiddlers.length; i++) {
		var tiddler = tiddlers[i];
		var listItem = document.createElement("li");
		list.appendChild(listItem);
		createTiddlyLink(listItem, tiddler.title, true);
	}
};

abego.parseNamedParameter = function(name, parameter, i) {
	var beginExpression = null;
	if ((i < parameter.length) && parameter[i] == name) {
		i++;
		if (i >= parameter.length) {
			throw "Missing text behind '%0'".format([name]);
		}
		
		return config.macros.forEachTiddler.paramEncode(parameter[i]);
	}
	return null;
}

// Internal.
//
// --- The write Action ---------------------------------------------------
//
config.macros.forEachTiddler.actions.write.handler = function(place, tiddlers, parameter, context) {
	// Parse the parameter
	var p = 0;
	if (p >= parameter.length) {
		this.handleError(place, "Missing expression behind 'write'.");
		return;
	}

	var textExpression = config.macros.forEachTiddler.paramEncode(parameter[p]);
	p++;

	// Parse the "begin" option
	var beginExpression = abego.parseNamedParameter("begin", parameter, p);
	if (beginExpression !== null) 
		p += 2;
	var endExpression = abego.parseNamedParameter("end", parameter, p);
	if (endExpression !== null) 
		p += 2;
	var noneExpression = abego.parseNamedParameter("none", parameter, p);
	if (noneExpression !== null) 
		p += 2;

	// Parse the "toFile" option
	var filename = null;
	var lineSeparator = undefined;
	if ((p < parameter.length) && parameter[p] == "toFile") {
		p++;
		if (p >= parameter.length) {
			this.handleError(place, "Filename expected behind 'toFile' of 'write' action.");
			return;
		}
		
		filename = config.macros.forEachTiddler.getLocalPath(config.macros.forEachTiddler.paramEncode(parameter[p]));
		p++;
		if ((p < parameter.length) && parameter[p] == "withLineSeparator") {
			p++;
			if (p >= parameter.length) {
				this.handleError(place, "Line separator text expected behind 'withLineSeparator' of 'write' action.");
				return;
			}
			lineSeparator = config.macros.forEachTiddler.paramEncode(parameter[p]);
			p++;
		}
	}
	
	// Check for extra parameters
	if (parameter.length > p) {
		config.macros.forEachTiddler.createExtraParameterErrorElement(place, "write", parameter, p);
		return;
	}

	// Perform the action.
	var func = config.macros.forEachTiddler.getEvalTiddlerFunction(textExpression, context);
	var count = tiddlers.length;
	var text = "";
	if (count > 0 && beginExpression)
		text += config.macros.forEachTiddler.getEvalTiddlerFunction(beginExpression, context)(undefined, context, count, undefined);
	
	for (var i = 0; i < count; i++) {
		var tiddler = tiddlers[i];
		text += func(tiddler, context, count, i);
	}
	
	if (count > 0 && endExpression)
		text += config.macros.forEachTiddler.getEvalTiddlerFunction(endExpression, context)(undefined, context, count, undefined);

	if (count == 0 && noneExpression) 
		text += config.macros.forEachTiddler.getEvalTiddlerFunction(noneExpression, context)(undefined, context, count, undefined);
		

	if (filename) {
		if (lineSeparator !== undefined) {
			lineSeparator = lineSeparator.replace(/\\n/mg, "\n").replace(/\\r/mg, "\r");
			text = text.replace(/\n/mg,lineSeparator);
		}
		saveFile(filename, convertUnicodeToUTF8(text));
	} else {
		var wrapper = createTiddlyElement(place, "span");
		wikify(text, wrapper, null/* highlightRegExp */, context.inTiddler);
	}
};


// ---------------------------------------------------------------------------
//  Helpers
// ---------------------------------------------------------------------------

// Internal.
//
config.macros.forEachTiddler.createContext = function(placeParam, whereClauseParam, sortClauseParam, sortAscendingParam, actionNameParam, actionParameterParam, scriptText, tiddlyWikiPathParam, inTiddlerParam) {
	return {
		place : placeParam, 
		whereClause : whereClauseParam, 
		sortClause : sortClauseParam, 
		sortAscending : sortAscendingParam, 
		script : scriptText,
		actionName : actionNameParam, 
		actionParameter : actionParameterParam,
		tiddlyWikiPath : tiddlyWikiPathParam,
		inTiddler : inTiddlerParam, // the tiddler containing the <<forEachTiddler ...>> macro call.
		viewerTiddler : config.macros.forEachTiddler.getContainingTiddler(placeParam) // the tiddler showing the forEachTiddler result
	};
};

// Internal.
//
// Returns a TiddlyWiki with the tiddlers loaded from the TiddlyWiki of 
// the given path.
//
config.macros.forEachTiddler.loadTiddlyWiki = function(path, idPrefix) {
	if (!idPrefix) {
		idPrefix = "store";
	}
	var lenPrefix = idPrefix.length;
	
	// Read the content of the given file
	var content = loadFile(this.getLocalPath(path));
	if(content === null) {
		throw "TiddlyWiki '"+path+"' not found.";
	}
	
	var tiddlyWiki = new TiddlyWiki();

	// Starting with TW 2.2 there is a helper function to import the tiddlers
	if (tiddlyWiki.importTiddlyWiki) {
		if (!tiddlyWiki.importTiddlyWiki(content))
			throw "File '"+path+"' is not a TiddlyWiki.";
		tiddlyWiki.dirty = false;
		return tiddlyWiki;
	}
	
	// The legacy code, for TW < 2.2
	
	// Locate the storeArea div's
	var posOpeningDiv = content.indexOf(startSaveArea);
	var posClosingDiv = content.lastIndexOf(endSaveArea);
	if((posOpeningDiv == -1) || (posClosingDiv == -1)) {
		throw "File '"+path+"' is not a TiddlyWiki.";
	}
	var storageText = content.substr(posOpeningDiv + startSaveArea.length, posClosingDiv);
	
	// Create a "div" element that contains the storage text
	var myStorageDiv = document.createElement("div");
	myStorageDiv.innerHTML = storageText;
	myStorageDiv.normalize();
	
	// Create all tiddlers in a new TiddlyWiki
	// (following code is modified copy of TiddlyWiki.prototype.loadFromDiv)
	var store = myStorageDiv.childNodes;
	for(var t = 0; t < store.length; t++) {
		var e = store[t];
		var title = null;
		if(e.getAttribute)
			title = e.getAttribute("tiddler");
		if(!title && e.id && e.id.substr(0,lenPrefix) == idPrefix)
			title = e.id.substr(lenPrefix);
		if(title && title !== "") {
			var tiddler = tiddlyWiki.createTiddler(title);
			tiddler.loadFromDiv(e,title);
		}
	}
	tiddlyWiki.dirty = false;

	return tiddlyWiki;
};


	
// Internal.
//
// Returns a function that has a function body returning the given javaScriptExpression.
// The function has the parameters:
// 
//	 (tiddler, context, count, index)
//
config.macros.forEachTiddler.getEvalTiddlerFunction = function (javaScriptExpression, context) {
	var script = context["script"];
	var functionText = "var theFunction = function(tiddler, context, count, index) { return "+javaScriptExpression+"}";
	var fullText = (script ? script+";" : "")+functionText+";theFunction;";
	return eval(fullText);
};

// Internal.
//
config.macros.forEachTiddler.findTiddlers = function(whereClause, context, tiddlyWiki) {
	var result = [];
	var func = config.macros.forEachTiddler.getEvalTiddlerFunction(whereClause, context);
	tiddlyWiki.forEachTiddler(function(title,tiddler) {
		if (func(tiddler, context, undefined, undefined)) {
			result.push(tiddler);
		}
	});
	return result;
};

// Internal.
//
config.macros.forEachTiddler.createExtraParameterErrorElement = function(place, actionName, parameter, firstUnusedIndex) {
	var message = "Extra parameter behind '"+actionName+"':";
	for (var i = firstUnusedIndex; i < parameter.length; i++) {
		message += " "+parameter[i];
	}
	this.handleError(place, message);
};

// Internal.
//
config.macros.forEachTiddler.sortAscending = function(tiddlerA, tiddlerB) {
	var result = 
		(tiddlerA.forEachTiddlerSortValue == tiddlerB.forEachTiddlerSortValue) 
			? 0
			: (tiddlerA.forEachTiddlerSortValue < tiddlerB.forEachTiddlerSortValue)
			   ? -1 
			   : +1; 
	return result;
};

// Internal.
//
config.macros.forEachTiddler.sortDescending = function(tiddlerA, tiddlerB) {
	var result = 
		(tiddlerA.forEachTiddlerSortValue == tiddlerB.forEachTiddlerSortValue) 
			? 0
			: (tiddlerA.forEachTiddlerSortValue < tiddlerB.forEachTiddlerSortValue)
			   ? +1 
			   : -1; 
	return result;
};

// Internal.
//
config.macros.forEachTiddler.sortTiddlers = function(tiddlers, sortClause, ascending, context) {
	// To avoid evaluating the sortClause whenever two items are compared 
	// we pre-calculate the sortValue for every item in the array and store it in a 
	// temporary property ("forEachTiddlerSortValue") of the tiddlers.
	var func = config.macros.forEachTiddler.getEvalTiddlerFunction(sortClause, context);
	var count = tiddlers.length;
	var i;
	for (i = 0; i < count; i++) {
		var tiddler = tiddlers[i];
		tiddler.forEachTiddlerSortValue = func(tiddler,context, undefined, undefined);
	}

	// Do the sorting
	tiddlers.sort(ascending ? this.sortAscending : this.sortDescending);

	// Delete the temporary property that holds the sortValue.	
	for (i = 0; i < tiddlers.length; i++) {
		delete tiddlers[i].forEachTiddlerSortValue;
	}
};


// Internal.
//
config.macros.forEachTiddler.trace = function(message) {
	displayMessage(message);
};

// Internal.
//
config.macros.forEachTiddler.traceMacroCall = function(place,macroName,params) {
	var message ="<<"+macroName;
	for (var i = 0; i < params.length; i++) {
		message += " "+params[i];
	}
	message += ">>";
	displayMessage(message);
};


// Internal.
//
// Creates an element that holds an error message
// 
config.macros.forEachTiddler.createErrorElement = function(place, exception) {
	var message = (exception.description) ? exception.description : exception.toString();
	return createTiddlyElement(place,"span",null,"forEachTiddlerError","<<forEachTiddler ...>>: "+message);
};

// Internal.
//
// @param place [may be null]
//
config.macros.forEachTiddler.handleError = function(place, exception) {
	if (place) {
		this.createErrorElement(place, exception);
	} else {
		throw exception;
	}
};

// Internal.
//
// Encodes the given string.
//
// Replaces 
//	 "$))" to ">>"
//	 "$)" to ">"
//
config.macros.forEachTiddler.paramEncode = function(s) {
	var reGTGT = new RegExp("\\$\\)\\)","mg");
	var reGT = new RegExp("\\$\\)","mg");
	return s.replace(reGTGT, ">>").replace(reGT, ">");
};

// Internal.
//
// Returns the given original path (that is a file path, starting with "file:")
// as a path to a local file, in the systems native file format.
//
// Location information in the originalPath (i.e. the "#" and stuff following)
// is stripped.
// 
config.macros.forEachTiddler.getLocalPath = function(originalPath) {
	// Remove any location part of the URL
	var hashPos = originalPath.indexOf("#");
	if(hashPos != -1)
		originalPath = originalPath.substr(0,hashPos);
	// Convert to a native file format assuming
	// "file:///x:/path/path/path..." - pc local file --> "x:\path\path\path..."
	// "file://///server/share/path/path/path..." - FireFox pc network file --> "\\server\share\path\path\path..."
	// "file:///path/path/path..." - mac/unix local file --> "/path/path/path..."
	// "file://server/share/path/path/path..." - pc network file --> "\\server\share\path\path\path..."
	var localPath;
	if(originalPath.charAt(9) == ":") // pc local file
		localPath = unescape(originalPath.substr(8)).replace(new RegExp("/","g"),"\\");
	else if(originalPath.indexOf("file://///") === 0) // FireFox pc network file
		localPath = "\\\\" + unescape(originalPath.substr(10)).replace(new RegExp("/","g"),"\\");
	else if(originalPath.indexOf("file:///") === 0) // mac/unix local file
		localPath = unescape(originalPath.substr(7));
	else if(originalPath.indexOf("file:/") === 0) // mac/unix local file
		localPath = unescape(originalPath.substr(5));
	else // pc network file
		localPath = "\\\\" + unescape(originalPath.substr(7)).replace(new RegExp("/","g"),"\\");	
	return localPath;
};

// ---------------------------------------------------------------------------
// Stylesheet Extensions (may be overridden by local StyleSheet)
// ---------------------------------------------------------------------------
//
setStylesheet(
	".forEachTiddlerError{color: #ffffff;background-color: #880000;}",
	"forEachTiddler");

//============================================================================
// End of forEachTiddler Macro
//============================================================================


//============================================================================
// String.startsWith Function
//============================================================================
//
// Returns true if the string starts with the given prefix, false otherwise.
//
version.extensions["String.startsWith"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
String.prototype.startsWith = function(prefix) {
	var n =  prefix.length;
	return (this.length >= n) && (this.slice(0, n) == prefix);
};



//============================================================================
// String.endsWith Function
//============================================================================
//
// Returns true if the string ends with the given suffix, false otherwise.
//
version.extensions["String.endsWith"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
String.prototype.endsWith = function(suffix) {
	var n = suffix.length;
	return (this.length >= n) && (this.right(n) == suffix);
};


//============================================================================
// String.contains Function
//============================================================================
//
// Returns true when the string contains the given substring, false otherwise.
//
version.extensions["String.contains"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
String.prototype.contains = function(substring) {
	return this.indexOf(substring) >= 0;
};

//============================================================================
// Array.indexOf Function
//============================================================================
//
// Returns the index of the first occurance of the given item in the array or 
// -1 when no such item exists.
//
// @param item [may be null]
//
version.extensions["Array.indexOf"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.indexOf = function(item) {
	for (var i = 0; i < this.length; i++) {
		if (this[i] == item) {
			return i;
		}
	}
	return -1;
};

//============================================================================
// Array.contains Function
//============================================================================
//
// Returns true when the array contains the given item, otherwise false. 
//
// @param item [may be null]
//
version.extensions["Array.contains"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.contains = function(item) {
	return (this.indexOf(item) >= 0);
};

//============================================================================
// Array.containsAny Function
//============================================================================
//
// Returns true when the array contains at least one of the elements 
// of the item. Otherwise (or when items contains no elements) false is returned.
//
version.extensions["Array.containsAny"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.containsAny = function(items) {
	for(var i = 0; i < items.length; i++) {
		if (this.contains(items[i])) {
			return true;
		}
	}
	return false;
};


//============================================================================
// Array.containsAll Function
//============================================================================
//
// Returns true when the array contains all the items, otherwise false.
// 
// When items is null false is returned (even if the array contains a null).
//
// @param items [may be null] 
//
version.extensions["Array.containsAll"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.containsAll = function(items) {
	for(var i = 0; i < items.length; i++) {
		if (!this.contains(items[i])) {
			return false;
		}
	}
	return true;
};


} // of "install only once"

// Used Globals (for JSLint) ==============
// ... DOM
/*global 	document */
// ... TiddlyWiki Core
/*global 	convertUnicodeToUTF8, createTiddlyElement, createTiddlyLink, 
			displayMessage, endSaveArea, hasClass, loadFile, saveFile, 
			startSaveArea, store, wikify */
//}}}


/***
!Licence and Copyright
Copyright (c) abego Software ~GmbH, 2005 ([[www.abego-software.de|http://www.abego-software.de]])

Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.

Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or other
materials provided with the distribution.

Neither the name of abego Software nor the names of its contributors may be
used to endorse or promote products derived from this software without specific
prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.
***/

Title: An Algorithm for the Complete Solution of Quadratic Eigenvalue Problems

Abstract: In this talk we present quadeig - an eigensolver for dense
quadratic eigenvalue problems (QEPs) that incorporates the most recent
contributions on the numerical solution of QEPs. The algorithm is
backward stable for quadratics that are not too heavily damped. For the
latter problems we propose to use an eigenvalue parameter scaling based
on tropical roots. We discuss issues in the derivation of a backward
stable eigensolver for polynomial eigenvalue problems of arbitrary
degree.  This talk covers joint work with Sven Hammarling and Chris Munro.
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>>
HEA STEM (Maths, Stats & OR): Experiences of learning programming within a Mathematics course

Date: 4 Feb 2013

Start Time: 10:30 am

Location/venue: University of Bath

More information: http://www.heacademy.ac.uk/events/detail/2013/4_Feb_MSOR_Bath
//{{{
config.options.chkShowRightSidebar = false;
//}}}
/***
|Name:|HideWhenPlugin|
|Description:|Allows conditional inclusion/exclusion in templates|
|Version:|3.1 ($Rev: 3919 $)|
|Date:|$Date: 2008-03-13 02:03:12 +1000 (Thu, 13 Mar 2008) $|
|Source:|http://mptw.tiddlyspot.com/#HideWhenPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
For use in ViewTemplate and EditTemplate. Example usage:
{{{<div macro="showWhenTagged Task">[[TaskToolbar]]</div>}}}
{{{<div macro="showWhen tiddler.modifier == 'BartSimpson'"><img src="bart.gif"/></div>}}}
***/
//{{{

window.hideWhenLastTest = false;

window.removeElementWhen = function(test,place) {
	window.hideWhenLastTest = test;
	if (test) {
		removeChildren(place);
		place.parentNode.removeChild(place);
	}
};


merge(config.macros,{

	hideWhen: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( eval(paramString), place);
	}},

	showWhen: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( !eval(paramString), place);
	}},

	hideWhenTagged: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( tiddler.tags.containsAll(params), place);
	}},

	showWhenTagged: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( !tiddler.tags.containsAll(params), place);
	}},

	hideWhenTaggedAny: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( tiddler.tags.containsAny(params), place);
	}},

	showWhenTaggedAny: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( !tiddler.tags.containsAny(params), place);
	}},

	hideWhenTaggedAll: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( tiddler.tags.containsAll(params), place);
	}},

	showWhenTaggedAll: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( !tiddler.tags.containsAll(params), place);
	}},

	hideWhenExists: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( store.tiddlerExists(params[0]) || store.isShadowTiddler(params[0]), place);
	}},

	showWhenExists: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( !(store.tiddlerExists(params[0]) || store.isShadowTiddler(params[0])), place);
	}},

	hideWhenTitleIs: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( tiddler.title == params[0], place);
	}},

	showWhenTitleIs: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( tiddler.title != params[0], place);
	}},

	'else': { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( !window.hideWhenLastTest, place);
	}}

});

//}}}

For more info, see [[here|http://mathsevents.cf.ac.uk/bamc2014/]]
For more info, see [[here|http://www.ima.org.uk/conferences/conferences_calendar/research_and_mathematics_in_higher_education.cfm]]
Innovative Space-Time-Parallel Methods, Manchester, June 18-19, for more information, see http://www.mims.manchester.ac.uk/events/workshops/spacetime/
//{{{
config.options.chkAnimate=false;
//}}}




The list of invited speakers for the Annual SIAM UKIE Meeting 2011 is available. Go to [[Annual Meeting]] for more details.
[[Welcome]]
[[Officers]]
[[News]]
[[Annual Meeting]]
[[Student Chapters|SIAM Student Chapters]]
[[Administration]]
[[Contact]]
 <<tiddler ToggleRightSidebar>>

Next Manchester SIAM Student Chapter Event: Talk by Jack Dongarra, Thursday 22 July 2010, 1430-1530. For further information click [[here|http://www.maths.manchester.ac.uk/~siam/index.php?lang=en&page=cfn2]].
A new SIAM Student Chapter has been set up at the  [[University of Bath|http://blogs.bath.ac.uk/siamsc/]]
Next SIAM Student Chapter have been set up at the  [[University of Warwick|http://www2.warwick.ac.uk/fac/sci/maths/postgrad/siamstudentchapter/]] and at the  [[University of Reading|http://www.reading.ac.uk/maths/siamstudentchapter/]]
!!!SIAM UKIE News
<<forEachTiddler
    where
        'tiddler.tags.contains("siamukienews")'
   sortBy 'tiddler.created' descending
    write
        '(index < 10) ? "* [["+tiddler.title+"]]\n" : ""'
>>
!!!Student Chapter News
<<forEachTiddler
    where
        'tiddler.tags.contains("chapternews")'
   sortBy 'tiddler.created' descending
    write
        '(index < 10) ? "* [["+tiddler.title+"]]\n" : ""'
>>
''President:'' [[Endre Süli|http://www.maths.ox.ac.uk/node/6605]] (University of Oxford) From April 1 2013 until March 31 2015

''Vice-President:'' [[Françoise Tisseur|http://www.maths.manchester.ac.uk/~ftisseur/]] (University of Manchester) From April 1 2013 until March 31 2015

''Secretary & Treasurer:'' [[Melina Freitag|http://people.bath.ac.uk/mamamf/]] (University of Bath) From April 1 2012 until March 31 2014


To view a list of past officers click [[here|Previous Officers]].

Optimization and Big Data (Workshop, Trek & Colloquium)
Edinburgh, Scotland, May 1-3, 2013

Website + Registration:

http://www.maths.ed.ac.uk/~prichtar/Optimization_and_Big_Data

No registration fee thanks to EPSRC funding (Mathematics for Vast Digital Resources + The Centre for Numerical Algorithms and Intelligent Software)

May 1-2: Workshop (Fourteen 40-minute talks, 7 on each day)

Confirmed speakers:

Olivier Fercoq      (Edinburgh)
Jacek Gondzio       (Edinburgh)
Zaid Harchaoui      (INRIA)
Desmond Higham      (Strathclyde)
Martin Jaggi        (Ecole Polytechnique)
Anatoli Juditsky    (Joseph Fourier)
Imre Polik          (SAS)
Shai Shalev-Shwartz (Jerusalem)
Martin Takac        (Edinburgh)
Steve Wright        (Wisconsin-Madison)

+ Poster Session (best student/postdoc poster wins an iPad mini - sponsored by SAS)

May 3:

Morning: Trek to Arthur's Seat (a 350m years old extinct volcano in the city centre)

Afternoon: Colloquium Talk by Steve Wright, Best Poster Award Ceremony, Networking Reception
Science has published an article about professional-skills training for graduate students which highlights the Oxford SIAM Student Chapter. Details can be found here:

http://sciencecareers.sciencemag.org/career_magazine/previous_issues/articles/2010_10_01/caredit.a1000096

Well done!
We are pleased to announce the 4th Annual Oxford University SIAM Student Conference (http://tinyurl.com/OxfordSIAM-2011), which will take place on Wednesday 9th February 2011 at St. Anne's College, Oxford. The day consists of two plenary sessions, student talks and poster presentations. Our external plenary speaker is Alan Champneys, Professor of Applied Non-linear Mathematics at Bristol University, and our internal plenary speaker is Alain Goriely, Professor of Mathematical Modelling. Students working in applied mathematics all over the UK are strongly encouraged to attend, and limited TRAVEL GRANTS are available on request. The day will culminate with a conference dinner at St. Anne's College. We are limited to 50 places for the dinner so it will be first-come first-served. Last year's event was very successful and this year's looks set to be even better.

The aim of the conference is to bring together undergraduate and graduate students, young researchers and faculty from a wide range of disciplines, sharing a common interest in Industrial and Applied Mathematics. This provides a great opportunity for young researchers to gain experience in presenting their work, and also gives students an idea of the kind of research that is currently being undertaken in the field of applied mathematics. What's more, the conference brings together mathematicians from all stages of their careers, from all branches of applied mathematics, and from across the country. Participants will have the opportunity to interact with one another, share their research/study interests, and make useful contacts both in the academic community and in industry.

To sign-up for the conference, please register at http://www.tinyurl.com/2011ChapterConference
Conference registration, including lunch and coffee, is completely FREE. 

Please indicate on the form if you are interested in giving a talk or a poster: students, and in particular undergraduates, are strongly encouraged to consider presenting their work. Talks will be 20 minutes long, plus 5 minutes for questions, and should require no specific technical knowledge. The level of the talks should be aimed at all those with a general applied mathematics background, so that a 3rd year undergraduate might follow the subject matter. Those wishing to give a talk or present a poster should submit a title and short abstract. CASH PRIZES will be awarded for the best student talk and poster.

The deadline for registering to talk or to present a poster is the 26th January. This is also the deadline to sign up and pay for the conference dinner. Registrations for attending the conference will still be accepted until the 4th February.

We hope to see lots of you there!

Best wishes,

The Oxford University SIAM Student Chapter Committee
Website: http://www.maths.ox.ac.uk/~siamstudentchapter
!!![[2014 UCL|meetings/SIAM14report.pdf]]
''Speakers:'' Robert MacKay (University of Warwick), Nick Gould (Rutherford Appleton Lab), Irene Fonseca (Carnegie Mellon University), Stephen Hendry (Oasys Software Ltd), Niall Madden (National University of Ireland, Galway), Alain Goriely (University of Oxford)

!!![[2013 Reading|meetings/SIAM13report.pdf]]
''Speakers:'' Coralia Cartis (University of Edinburgh), Arieh Iserles (University of Cambridge), Françoise Tisseur (University of Manchester), Clifford Nolan (University of Limerick), Sebastian Reich (Universität Potsdam), Endre Süli (University of Oxford)

!!![[2012 Leicester|meetings/SIAM12report.pdf]]
''Speakers:'' Charlie Elliott (University of Warwick), Bill Lionheart (University of Manchester), Phillipe Toint (The University of Namur),  Helen Byrne (University of Oxford), Simon Chandler-Wilde (University of Reading), Alex Lipton (Bank of America Merrill Lynch/Imperial College London)

!!![[2011 Manchester |http://www.siam.org/news/news.php?id=1877]]
''Speakers:'' Nick Trefethen (University of Oxford), Peter Jimack (Leeds University), Beatrice Pelloni (University of Reading), Volker Mehrmann (TU Berlin), Simon Arridge (University College London), Mark Panitz (BAE Systems)

!!!2010 Edinburgh
''Speakers:'' Barbara Niethammer(University of Oxford), Matthias Heil (University of Manchester), Philip Maini (University of Oxford), Douglas Arnold (University of Minnesota), Ivan Graham (University of Bath), Michael Tretyakov (University of Leicester), Greg Pavliotis (Imperial College London)

!!![[2009 Limerick|meetings/SIAM09report.pdf]]
''Speakers:'' Andrew Fowler (University of Limerick), Andy Wathen (University of Oxford), Robin Knowles (TotalSim), Annick Sartenaer (University of Namur, Belgium), Dave Hewett (University of Oxford SIAM Student Chapter), James Gleeson (University of Limerick)

!!![[2008 Southampton|meetings/SIAM08report.pdf]]
''Speakers:'' Roland Keunings (Universite catholique de Louvain), Celia Glass (City University), Christine De Mol (Universite Libre de Bruxelles), Chris Farmer (Schlumberger), Peter Jimack (University of Leeds), John King (University of Nottingham)

!!![[2007 Oxford|meetings/SIAM07report.pdf]]
''Speakers:'' Linda Cummings (University of Nottingham), Cleve Moler (Mathworks), Jon Chapman (Oxford University), Andy Woods (Cambridge University), Alison Ramage (Strathclyde University), Andrew Stuart (University of Warwick)

!!![[2006 Cardiff|meetings/SIAM06report.txt]]
''Speakers:'' Peter Clarkson (University of Kent), Marty Golubitsky (University of Houston), Des Higham (University of Strathclyde), Ben Leimkuhler (University of Leicester), Hinke Osinga (University of Bristol)

!!![[2005 Cork|meetings/SIAM05report.txt]]
''Speakers:'' Russell Davies (University of Wales, Aberystwyth), Ivan Graham (University of Bath), Neil O'Connell (University of Warwick), Niall O'Murchadha (University College Cork), Alexei Pokrovskii (University College Cork)

!!![[2004 Sheffield|meetings/SIAM04report.txt]]
''Speakers:'' David Thomson (UK Met Office), Lucy Wyatt (University of Sheffield), Alastair Fitt (University of Southampton), Pat Fitzpatrick (University College Cork), Jack Dongarra (University of Tennessee/ORNL)

!!![[2003 Bath|meetings/SIAM03report.pdf]]
''Speakers:'' Helen Byrne (Nottingham), Doug Arnold (Minnesota), John Toland (Bath), John Billingham (Birmingham), Philippe Toint (Namur)

!!![[2002 Leeds|meetings/SIAM02report.txt]]
''Speakers:'' Brian Sleeman (University of Leeds), Nick Higham (University of Manchester), Jens Marklof (University of Bristol), John Willis (University of Cambridge), John Gibbon (Imperial College, London)

!!![[2001 Strathclyde|meetings/SIAM01report.txt]]
''Speakers:'' Tim Goodman (University of Dundee), Howard Elman (University of Maryland), Valerie Isham (University College London), Mark Davis (Imperial College), Alex Craik (University of St. Andrews)

!!!2000 Imperial College
''Speakers:'' John Ball (Oxford University), John Dold (UMIST), Roger Fletcher (University of Dundee), Derek Moore (Imperial College), Jan Verwer (CWI, Netherlands)

!!!1999 Imperial College
''Speakers:'' Chris Budd (University of Bath), Charlie Elliot (University of Sussex), Colin Please (University of Southampton), Gil Strang (MIT, SIAM President), Martin Stynes (University of Ireland, Cork)

!!![[1998 UMIST|meetings/SIAM98report.txt]]
''Speakers:'' John Hinch (Cambridge University), Rupert Klein (Free University of Berlin), Mark Chaplain (University of Dundee), Bill Morton (Oxford/Bath), Nick Trefethen (Oxford University)

!!!1997 UMIST
''Speakers:'' David Crighton (University of Cambridge), John Ockendon (Oxford University), David Sloan (University of Strathclyde), Trevor Stuart (Imperial College), Margaret Wright (SIAM President)


!!!Preconditioning Conference 2013

International Conference On Preconditioning Techniques For Scientific And Industrial Applications

Date:  19-21 June 2013
Venue: St Anne's College, Oxford, UK
URL: Please click here for the full Conference Website

Conference Chairs:
Esmond G. Ng, Lawrence Berkeley National Laboratory, USA
Yousef Saad, The University of Minnesota, USA
Wei-Pai Tang, The Boeing Company, USA
Andy Wathen, University of Oxford, UK

The International Conference on Preconditioning Techniques for Scientific and Industrial Applications, Preconditioning 2013, is the eighth in a series of conferences that focus on preconditioning techniques in sparse matrix computation. 

More information is available [[here|http://people.maths.ox.ac.uk/ekertl/PRECON13/index.html]]
President: K.W. Morton (until 31/3/99) Vice-President: J.W. Dold (until 31/3/99) Secretary/Treasurer: D.J. Silvester (until 31/3/00)

President: J.T Stuart (until 31/3/01) Vice-President: D.J. Higham (until 31/3/01) Secretary/Treasurer: D.J. Silvester (until 31/3/00)

President: J.T Stuart (until 31/3/01) Vice-President: D.J. Higham (until 31/3/01) Secretary/Treasurer: P.K. Jimack (until 31/3/02)

President: D.F. Parker (until 31/3/03) Vice-President: I.G. Graham (until 31/3/03) Secretary/Treasurer: P.K. Jimack (until 31/3/02)

President: D.F. Parker (until 31/3/03) Vice-President: I.G. Graham (until 31/3/03) Secretary/Treasurer: A. Ramage (until 31/3/04)

President: M. Stynes (until 31/3/05) Vice-President: J. Aitchison (until 31/3/05) Secretary/Treasurer: A. Ramage (until 31/3/04)

President: M. Stynes (until 31/3/05) Vice-President: J. Aitchison (until 31/3/05) Secretary/Treasurer: G.J. Lord (until 31/3/06)

President: L. N. Trefethen (until 31/3/07) Vice-President: S.J. Hogan (until 31/3/07) Secretary/Treasurer: G.J. Lord (until 31/3/06)

President: L. N. Trefethen (until 31/3/07) Vice-President: S.J. Hogan (until 31/3/07) Secretary/Treasurer: S. Langdon (until 31/3/08)

President: R. Davies (until 31/3/09) Vice-President: C. Please (until 31/3/09) Secretary/Treasurer: S. Langdon (until 31/3/08)

President: D. Silvester (until 31/3/11) Vice-President: A. Hegarty (until 31/3/11) Secretary/Treasurer: S. Dollar (until 31/3/10)

President: N. K. Nichols (until 31/3/13) Vice-President: J. Tanner (until 31/3/13) Secretary/Treasurer: T. Betcke (until 31/3/12)
You can now register for the next Annual Meeting at the University of Leicester. Please go to the [[Annual Meeting|Annual Meeting]] section of this homepage.
[[Endre Süli|http://www.maths.ox.ac.uk/node/6605]] (University of Oxford)  and [[Françoise Tisseur|http://www.maths.manchester.ac.uk/~ftisseur/]] (University of Manchester) have been elected as new President and Vice-President of the UK & Republic of Ireland SIAM Section from April 1 2013 until March 31 2015.
These Rules of Procedure (hereinafter called "Rules") apply to the SIAM Section called "The UK and Republic of Ireland Section of SIAM".

The Section to which these Rules apply is formed under the aegis of the Society for Industrial and Applied Mathematics, and shall operate within the Bylaws of the parent organisation. The Section shall not affiliate with any other organisation without first obtaining the written approval of SIAM. No provisions of these rules shall be construed so as to contradict the Bylaws of SIAM.

!!Article I - PURPOSE

To promote and support applied and industrial mathematics in the UK and Republic of Ireland.

!!Article II - ACTIVITIES

To organise inexpensive meetings which allow international exposure/involvement for postgraduate students.

To promote activities which bring together SIAM members from different fields.

To promote additional support for existing conferences and activities in the UK and Republic of Ireland.

!!Article III - TERRITORY

The United Kingdom and Republic of Ireland

!!Article IV - MEMBERSHIP

Section 1. Any person engaged or interested in mathematics and its applications shall be eligible for membership in this Section. The only requirements are:

membership or student membership of SIAM.
residence or principle place of work in the UK or Republic of Ireland.
All persons satisfying (1) and (2) will automatically be members of the Section
Section 2. There is the one grade of membership.

!!Article V - SPONSORSHIP

The section has no sponsor.

!!Article VI

Section 1. The Section shall have a President, a Vice President, a Secretary and a Treasurer. The Secretary and Treasurer will usually be combined into a single office. Officers shall be regular members in good standing with SIAM.

Section 2. The President shall preside at the meetings of the Section and the Section Executive Committee (See Article VII below). In the absence of the President, the Vice President shall assume the duties of the President. In the absence of the latter, the Secretary shall assume said duties.

Section 3. The Secretary shall keep a record of the affairs of the Section, handle correspondence, and submit an annual report of Section activities to the Secretary of SIAM, which report shall be suitable for publication in the SIAM NEWS or its equivalent.

Section 4. The Treasurer shall receive and take custody of Section funds, and shall submit an annual Treasurer`s Report and other financial reports, as requested, to the Treasurer of SIAM. The Annual Treasurer`s Report shall be prepared as of December 31 and shall be transmitted to the Treasurer of SIAM by no later than January 15.

Section 5. All officers will be elected for a 2-year term, but may be re-elected.

!!Article VII - EXECUTIVE COMMITTEE

Section 1. The Section will be managed by an Executive Committee consisting of the incumbent officers, the most recent retired president and the President of the Institute of Mathematics and its Applications, or another IMA board member so long as this person is a member of SIAM. It will be the usual principle that two or three more members of the Section be co-opted onto the Executive Committee in order to have a broad representative of different areas of applicable mathematics and a good geographical spread. The Chairman shall be as in Article VI Section 2.

!!Article VIII - OTHER COMMITTEES

The section will have no other committees.

!!Article IX - ELECTIONS

Nominations for officers should be made to the Secretary by 31st January in every odd year. A seconder is required for each nomination. The secretary shall arrange a postal ballot of the Section membership.

!!Article X - MEETINGS

Section 1. There shall be at least one technical meeting per year. This annual meeting should usually be held in early January.

Section 2. The Executive Committee shall conduct a business meeting once per year usually during the month of September. Other business meetings may be called by the President or the Treasurer on two weeks notice.

!!Article XI

Section 1. The Section will not levy dues.

Section 2. The Section shall deposit all unused funds to which it has legal title in excess of \pounds200 in an insured savings account, unless current operating commitments are in excess of that amount or unless the Section Treasurer obtains a written authorisation from the SIAM Treasurer.

Section 3. The Treasurer shall maintain books of account that show income and expense items for all activities and balances for all accounts of the Section.

Section 4. The Section may request a grant or loan from the Treasurer of SIAM under the provision of Article XI, Section 8 of the Bylaws of SIAM. Such requests shall be made by letter to the Treasurer of SIAM and include a current financial statement for the Section and a proposed budget for the requested funds.

Section 5. No officer or member of the Section may apply for a grant to support Section activities or enter into any contract to support such activities or provide services, without approval of the President and Treasurer of SIAM or the Managing Director acting on behalf of the Treasurer.

!!Article XII - AMENDMENTS

Section 1. These Rules may be altered or amended with the approval of the Board of Trustees of SIAM. Submission to the Board of proposed alterations or amendments shall be made only after approval by majority vote of members of the Section present (or represented by proxy) at a scheduled meeting.

!!Article XIII - TERMINATION OF THE SECTION

Section 1. The Section may terminate itself by the unanimous vote of the members of the Section present (or represented by proxy) at a scheduled meeting, provided that notice of the proposed termination and the meeting at which it is to be considered has been given to all Section members at least 30 days in advance.

Section 2. The Section may be terminated by the Board if there has been no Section activity for one year.

Section 3. In the event the Section terminates, the funds to which it has legal title shall revert to the account of SIAM.

A SIAM Chapter Day will take place in Cardiff on 17th January 2014.

More information is availabe [[here|http://www.cardiff.ac.uk/maths/research/researchgroups/applied/siam/siamday2014.html]]
!!!Objectives

This one-day event is the first in an annual series which aims to provide a platform for discussions on current research on mathematical modelling, analysis, and simulation of problems in science and engineering. 

Doctoral students and postdoctoral researchers from across Cardiff University and their guests from other universities are invited to showcase and communicate their recent results in the form of a poster accompanied by a title and a set of bullet points highlighting the core findings of their work. 

All contributed titles and highlights will appear in the Day's programme and should be emailed to siam@cardiff.ac.uk by 21 December 2012.

!!!Invited Speakers 

The plenary speakers for this inaugural event are as follows: 

Prof Nick Higham, FRS (School of Mathematics, University of Manchester) - Vice President at Large of SIAM 

Prof Alain Goriely (Mathematical Institute, University of Oxford) 

Dr Matthew Gilbert (Department of Civil and Structural Engineering, University of Sheffield) 

Prof Simon Cox (Institute of Mathematics and Physics, Aberystwyth University)

For more info http://www.cardiff.ac.uk/maths/research/researchgroups/applied/siam/siamday2013.html
This conference is aiming to bring PhD and postdoctoral applied mathematicians from a wide variety of research areas into one place. We hope that by sharing ideas between ourselves we can be inspired to find new avenues of research, combining the various strengths of each research area. As such we would love to invite anyone with an interest in applied mathematics to Manchester on the 18th of May.

This one day event will consist of four plenary lectures, fourteen talks from PhDs and postdocs (split into two parallel sessions) and a poster session and there will be prizes for the best talk and poster of the day. For full details of the timetable as they emerge click here.

The online registration form for the conference is available [[here|http://www.maths.manchester.ac.uk/~siam/snscc12]] and for further information, please email samuel.relton@maths.manchester.ac.uk. 
This conference is aiming to bring PhD and postdoctoral applied mathematicians from a wide variety of research areas into one place. We hope that by sharing ideas between ourselves we can be inspired to find new avenues of research, combining the various strengths of each research area. As such we would love to invite anyone with an interest in applied mathematics to Manchester on the 18th of May.

This one day event will consist of four plenary lectures, fourteen talks from PhDs and postdocs (split into two parallel sessions) and a poster session and there will be prizes for the best talk and poster of the day. For full details of the timetable as they emerge click here.

The online registration form for the conference is available [[here|http://www.maths.manchester.ac.uk/~siam/snscc12]] and for further information, please email samuel.relton@maths.manchester.ac.uk. 

There is a [[report|meetings/snscc12_report.pdf]] on the first SIAM National Student Chapter Conference 2012 (SNSCC12), which was sponsored by the  UK & Republic of Ireland SIAM section.
The [[SIAM Student Chapter Warwick|http://www2.warwick.ac.uk/fac/sci/maths/postgrad/siamstudentchapter/home/]] organised the second SIAM National Student Chapter Conference. 

There is a [[report|meetings/snscc13_report.pdf]] written by Andrew Lam on the second SIAM National Student Chapter Conference 2013 (SNSCC13), which was sponsored by the  UK & Republic of Ireland SIAM section.
A SIAM student chapter resides at one or more colleges or universities, and ideally involves students and faculty members from different departments. The purpose of a chapter is to generate interest in applied mathematics and computational science by providing students opportunities to:

* Share ideas and enthusiasm with fellow students and faculty from any relevant department on campus
* Explore career opportunities
* Make contacts that will last a lifetime
* Develop leadership skills

Since 2012 SIAM National Student Chapter Conferences have been organised. A list of meetings and reports can be found below.

!!!Student Chapters in the UK and Republic of Ireland
* [[University of Bath|http://blogs.bath.ac.uk/siamsc/]]
* [[Cardiff University|http://www.cardiff.ac.uk/maths/research/researchgroups/applied/siam/index.html]]
* [[Heriot-Watt University and University of Edinburgh|http://www.edsiamchapter.co.uk]]
* [[University of Manchester|http://www.maths.man.ac.uk/~siam]]
* [[Oxford University|http://www.maths.ox.ac.uk/~siamstudentchapter]]
* [[University of Reading|http://www.reading.ac.uk/maths/siamstudentchapter/]]
* [[University of Strathclyde|http://www.siam.org/students/chapters/current/ustra.php]]
* [[University of Warwick|http://www2.warwick.ac.uk/fac/sci/maths/postgrad/siamstudentchapter]]

!!!SIAM National Student Chapter Conferences (SNSCC)

* [[2013 Warwick|meetings/snscc13_report.pdf]]
* [[2012 Manchester|meetings/snscc12_report.pdf]]

Title: Assimilating data into scientific models: An optimal transportation perspective

Abstract:   Reliable forecasting requires the combination of scientific
modeling with available data. When dynamical phenomena are to be forecasted
this leads to sequential data assimilation problems which are best tackled
from a Bayesian perspective.   Bayes' formula provides the centerpiece for
Bayesian data assimilation and Bayesian learning in general. However, beyond
its conceptional simplicity and beauty Bayes' formula is hardly ever
directly applicable and this is true in particular when Bayes' formula needs
to be interfaced with complex scientific models. In this context it is
better to talk of simulating Bayes' formula. Bayes' formula can be simulated
in the setting of sequential Monte Carlo methods and general Markov chain
Monte Carlo methods. However, those methods suffer from the curse of
dimensionality. In my talk, I will start approaching Bayes' formula from an
entirely different perspective; namely that of coupling probability measures
and optimal transportation. While this shift of focus in itself does not
resolve the intractibility issue of high dimensional systems, it  naturally
puts the popular ensemble Kalman filters into context and suggests natural
extensions to non-Gaussian data assimilation problems; some of which I will
outline in my talk.
/***
|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;
}
//}}}

[img[SIAM Logo and Artwork|SIAM_logo_Hinke-DKM.jpg]]
UK & Republic of Ireland SIAM section
 .tagged { 
         display: none; 
     } 
/%
!info
|Name|ToggleRightSidebar|
|Source|http://www.TiddlyTools.com/#ToggleRightSidebar|
|Version|2.0.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion|
|Description|show/hide right sidebar (SideBarOptions)|
Usage
<<<
{{{
<<tiddler ToggleRightSidebar>>
<<tiddler ToggleRightSidebar with: label tooltip>>
}}}
Try it: <<tiddler ToggleRightSidebar##show
	with: {{config.options.chkShowRightSidebar?'►':'◄'}}>>
<<<
Configuration:
<<<
{{{
config.options.chkShowRightSidebar (true)
config.options.txtToggleRightSideBarLabelShow (◄)
config.options.txtToggleRightSideBarLabelHide (►)
}}}
<<<
!end
!show
<<tiddler {{
	var co=config.options;
	if (co.chkShowRightSidebar===undefined) co.chkShowRightSidebar=true;
	var sb=document.getElementById('sidebar');
	var da=document.getElementById('displayArea');
	if (sb) {
		sb.style.display=co.chkShowRightSidebar?'block':'none';
		da.style.marginRight=co.chkShowRightSidebar?'':'1em';
	}
'';}}>><html><nowiki><a href='javascript:;' title="$2"
onmouseover="
	this.href='javascript:void(eval(decodeURIComponent(%22(function(){try{('
	+encodeURIComponent(encodeURIComponent(this.onclick))
	+')()}catch(e){alert(e.description?e.description:e.toString())}})()%22)))';"
onclick="
	var co=config.options;
	var opt='chkShowRightSidebar';
	var show=co[opt]=!co[opt];
	var sb=document.getElementById('sidebar');
	var da=document.getElementById('displayArea');
	if (sb) {
		sb.style.display=show?'block':'none';
		da.style.marginRight=show?'':'1em';
	}
	saveOptionCookie(opt);
	var labelShow=co.txtToggleRightSideBarLabelShow||'&#x25C4;';
	var labelHide=co.txtToggleRightSideBarLabelHide||'&#x25BA;';
	if (this.innerHTML==labelShow||this.innerHTML==labelHide) 
		this.innerHTML=show?labelHide:labelShow;
	this.title=(show?'hide':'show')+' right sidebar';
	var sm=document.getElementById('storyMenu');
	if (sm) config.refreshers.content(sm);
	return false;
">$1</a></html>
!end
%/<<tiddler {{
	var src='ToggleRightSidebar';
	src+(tiddler&&tiddler.title==src?'##info':'##show');
}} with: {{
	var co=config.options;
	var labelShow=co.txtToggleRightSideBarLabelShow||'&#x25C4;';
	var labelHide=co.txtToggleRightSideBarLabelHide||'&#x25BA;';
	'$1'!='$'+'1'?'$1':(co.chkShowRightSidebar?labelHide:labelShow);
}} {{
	var tip=(config.options.chkShowRightSidebar?'hide':'show')+' right sidebar';
	'$2'!='$'+'2'?'$2':tip;
}}>>
|~ViewToolbar|closeTiddler closeOthers editTiddler > fields syncing permalink references jump|
|~EditToolbar|+saveTiddler -cancelTiddler deleteTiddler|
The next UK & Republic of Ireland SIAM section meeting is going to take place on 8th January 2013 at the University of Reading.

For more information go to "Annual Meeting" via the menu.
The next UK & Republic of Ireland SIAM section meeting is going to take place on 9th January 2014 at the University College London.

For more information go to "Annual Meeting" via the menu.
UKIE SIAM awards student prizes at various meetings. Guidelines for the awards of these prizes can be found [[here|various/student_prize.pdf]].

Previous winners:

!!!Biennial Conference on Numerical Analysis
* 2009 (best student talks): Jaroslav Fowkes (Oxford), Hafiz Wajid (Strathclyde).
* 2009 (certificate of merit for student talk): Chris Fuller (Auburn), Wouter Hamelinck (Ghent), Jonathan Hogg (Edinburgh), Qifeng Liao (Manchester), Sundararajan Natarajan (Glasgow), Gaurev Prinja (Manchester), Tyrone Rees (Oxford), Emily Walsh (Bath), Hao Wang (Oxford), Xiaolin Xiao (Strathclyde).

!!!The British Applied Mathematics Colloquium
* 2009 (best student talks): Philip Ingrey (Nottingham), Andrew Stewart (Oxford).
* 2009 (best poster): Katy Richardson (Cambridge).
* 2007 (best student talks): Sunny Chiu-Webster (Cambridge), Shreyas Jalikop (Manchester), Philip Murray (Oxford), James Sprittles (Birmingham).
* 2006 (best student talks): Mr Lloyd Bridge (UBC Vancouver), Mr David E. Jessop (University of Bristol), Mr Gareth W. Jones (University of Oxford), Miss Melanie Ottenio (University of Glasgow), Mr Jamal Uddin (University of Birmingham).
* 2005 (best student talks): Sara Jabbari (Nottingham), Martin Thomas (Reading), Dominic Vella (Cambridge).
* 2005 (best student poster): Nick McCullen.
* 2004 (best student talks): Christopher Heaton (Cambridge), Alan Hinds (UCL), Rachel Levy (North Carolina State University)
* 2004 (best student poster): Andrew King (Nottingham).
* 2002 (best student talk): Kirk Green (Bristol).
* 2001 (best student presentations): A.S. Lawless (Reading), K. Ratcliffe (Loughborough).

!!!Boundary and Interior Layers - Computational & Asymptotic Methods, at the University of Limerick
* 2008: Martin Viscor (NUI Cork).

!!!The 8th International Conference on Mathematical and Numerical Aspects of Waves, at the University of Reading
* 2007: Britta Heubeck (Erlangen), Richard Norton (Bath).

!!!The Numerical Analysis Summer School at the University of Durham
* 2002: Craig Brand (University of Strathclyde), Angela Mihai (University of Durham).

<!--{{{-->
<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='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
Welcome to the Homepage of the UK & Republic of Ireland SIAM section. Here you can find news and updates about [[SIAM|http://www.siam.org]] activities around the UK and Ireland.

!!!SIAM UKIE News
<<forEachTiddler
    where
        'tiddler.tags.contains("siamukienews")'
   sortBy 'tiddler.created' descending
    write
        '(index < 10) ? "* [["+tiddler.title+"]]\n" : ""'
>>
!!!Student Chapter News
<<forEachTiddler
    where
        'tiddler.tags.contains("chapternews")'
   sortBy 'tiddler.created' descending
    write
        '(index < 10) ? "* [["+tiddler.title+"]]\n" : ""'
>>