<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]];
	border-left:1px solid [[ColorPalette::TertiaryLight]];
	border-top:1px solid [[ColorPalette::TertiaryLight]];
	border-right:1px solid [[ColorPalette::TertiaryLight]];
.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0;}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

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

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes.
body {font-size:0.8em;}
#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}
.subtitle {font-size:0.8em;}
.viewer table.listView {font-size:0.95em;}
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none !important;}
#displayArea {margin: 1em 1em 0em;}
noscript {display:none;} /* Fixes a feature in Firefox 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 class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
<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 id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></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]]

This tiddler was automatically created to record the details of this server
A mesoscopic model of a diblock copolymer is used to study the formation, stability, and coarsening of lamellar phases. With the transition to new technologies in fields such as micro electronics or biomedicine, microstructural control of the polymer is necessary in order to meet particular performance requirements. As a consequence, increased emphasis has been placed on research on microstructure and self-assembly at the mesoscale. We mention, for example, the use of block copolymers as nanolithographic templates, or as photonic band gap materials, light emitting diodes and dielectric mirrors. The central challenge for widespread application in both areas is to achieve long-ranged domain order of the appropriate orientation.

[<img(30%+,auto)[http://homepages.spa.umn.edu/~vinals/research/bcopol/monomer.xfig.jpg]] Diblock copolymers are macromolecules comprising two chemically distinct and mutually incompatible segments (monomers A and B) that are covalently bonded. Their equilibrium properties are dictated by N, the degree or polymerization (i.e., the length of the chain), f, the volume fraction of one of the monomers, and $\chi$, the ~Flory-Huggins interaction parameter between the distinct segments. The first two parameters can be controlled through processing, whereas the third is determined by the choice of monomers involved. 

Above the order-disorder transition temperature $T_{ODT}$, the equilibrium phase is fluid like (disordered) (below, left).
[<img(25%+,auto)[http://homepages.spa.umn.edu/~vinals/research/bcopol/disordered.xfig.jpg]] Below $T_{ODT}$, equilibrium structures of a wide variety of symmetries have been predicted and experimentally observed. Around f=0.5 (symmetric mixture), a so called lamellar phase is observed (below, right), in which nanometer sized
layers of A and B rich regions alternate in space.

!!Orientation by oscillatory shear flows

Several methods are currently in use to accelerate the development of long-ranged order of block copolymer microstructures. We have focused on one the most common for bulk samples: an externally imposed reciprocating shear as shown in the figure [img(75%+,auto)[http://homepages.spa.umn.edu/~vinals/images/lam_3D_shear_transparent.jpg]].

In the absence of shear, an isotropic large scale configuration emerges. This is a visualization at fixed time. Surfaces shown are related to gradients of the nematic order parameter tensor and highlight grain boundaries in the system. Transparent regions correspond to locally ordered lamellae.


We also show animations of a thee dimensional lamellar phase as it coarsens as a function of time. Shown are defected regions (mostly grain boundaries) in the absence of shear.

<html><iframe width="420" height="315" src="http://www.youtube.com/embed/fuP9AyaOrKg" frameborder="0" allowfullscreen></iframe></html>

The same three dimensional system but under oscillatory shear (animation shown is in the reference frame co-moving with the oscillatory shear). Defects are now predominantly dislocation lines.

<html><iframe width="420" height="315" src="http://www.youtube.com/embed/WW-lAOIDLoc/" frameborder="0" allowfullscreen></iframe></html>


# Google Chrome does not allow """file:///""" URL's to use AJAX to load other files, so [[Plugin: jsMath]] cannot load {{{jsMath.js}}}.  This is a security design decision, and it seems unlikely that it will change.  To work around this, [[Plugin: jsMath]] will create a [[MarkupPostHead]] tiddler with a <script> tag to load it instead.  You will then be directed to save your TiddlyWiki.  (On Google Chrome this requires [[TiddlySaver.jar|http://www.tiddlywiki.com/TiddlySaver.jar]] in the same directory and a working Java plugin)  It is safe to pass around TiddlyWikis with this code in [[MarkupPostHead]], it will work on all browsers.  (But it makes the install 2-step and can create errors if you uninstall [[Plugin: jsMath]], beware!)  Another workaround is to add {{{--allow-file-access-from-files}}} to the {{{google-chrome}}} command line when you run it.
# Due to the same above "feature", certain sub-libraries loaded automatically by jsMath using AJAX will not work on Chrome using a """file:///""" URL.
Our research is of theoretical and computational nature, and focuses on mesoscale theories of nonequilibrium phenomena in extended systems, with applications to Statistical Mechanics, Soft Matter Physics, and Materials Science. Generically, systems outside of thermodynamic equilibrium involve unstable interfaces and moving topological defects. We develop theories at the mesoscale of the relevant phases, analyze their macroscopic scale asymptotics, and obtain their non equilibrium properties through large scale computation. Our research is currently motivated by topologically driven flows in liquid crystals, unstable interfaces in complex fluids, and a mesoscale description of plasticity in defected materials.
!!Smectic film instabilities
[<img(45%+,auto)[http://homepages.spa.umn.edu/~vinals/tspot_files/smectic_web.png]] A smectic is a complex fluid phase of a liquid crystal that exhibits broken translational symmetry in only one direction (a one dimensional solid or a layered phase). Interfaces separating smectic and isotropic phases in equilibrium can be quite complex, such as the array of focal conics shown left. Such an equilibrium shape depends on the complex interplay between mean and Gaussian curvatures, and bending and torsion energies. These are effects largely absent in normal fluid or solid phases. We are investigating an order parameter model of the smectic-isotropic system that can describe the equilibrium thermodynamics of its complex interfacial morphologies as a function of intrinsic metric properties of the interface. The same model can then be extended to describe surface instabilities and the ensuing pattern formation. The model is especially useful in describing instabilities in which the topology of the domains change as a function of time. The figure at left shows an evolving surface pattern in three dimensions from an initial toroidal focal domain. New smectic layers are being formed at the center of the domain by  layer growth from the isotropic phase [[[EV18]|http://homepages.spa.umn.edu/~vinals/mss/ev1.pdf]].
!!Mesoscale theory of defected materials
[<img(45%+,auto)[http://homepages.spa.umn.edu/~vinals/tspot_files/PFC_amplitude_phase_dipole]]  A current major objective in Materials Science, “reversing the arrow: materials by design”, calls for the development of theoretical and computational inverse methods to design materials that have specified properties and function. Such an inverse optimization problem requires robust solutions to the forward problem involved in the determination of macroscopic properties as a function of the nano and mesoscopic properties and composition of any given material. Although great progress has been achieved in the inverse design of materials close to thermodynamic equilibrium, most materials, are rarely uniform, but rather exhibit complex and often evolving microstructure. Therefore the standard tools of Solid State Physics and equilibrium Statistical Mechanics do not generally apply. In fact, the strong response of non equilibrium phases to external stresses and perturbations means that their properties strongly depend on interactions with boundaries, preparation methods, and prior history. The aim of our work is to establish the theoretical framework within which to predict structure evolution in non-equilibrium solids, and thus to develop the foundation of reliable forward models of processing-structure-property relationships.

For a defected solid, we adopt a coarse-grained or continuum description of the defect density that encodes the topological content of a given element of volume [[[PE16]|http://link.aps.org/doi/10.1103/PhysRevB.93.014107]]. Phenomenological equations of motion that respect topological constraints are developed to describe the temporal evolution of an ensemble of interacting defects. It is possible to reformulate these equations at a more microscopic level by introducing Hamiltonians that allow for defected ground states, and that can lead to macroscopic equations of defect motion while still resolving mesoscopic defect cores and their evolution [[[AS18]|http://homepages.spa.umn.edu/~vinals/mss/as1.pdf]]. The figure shows amplitudes and phases of a dislocation dipole in a hexagonal lattice. Two of the three wave amplitudes decay to zero in the defect core region, whereas the phase exhibit a discontinuity along a line joining the core. These solutions are not imposed as in classical treatments; rather they appear as a direct solution of the mesoscopic theory.
!!Topology driven flows in nematic suspensions

[<img(20%+,auto)[http://homepages.spa.umn.edu/~vinals/tspot_files/transverse_chargedensitydipole.png]][<img(20%+,auto)[http://homepages.spa.umn.edu/~vinals/tspot_files/transverse_velocitydipole.png]] The study of of liquid crystal based suspensions is motivated by applications in materials science as well as in biological systems. At a fundamental level, and in contrast with normal suspending fluids, nematic order in a liquid crystalline matrix leads to long range elastic interactions either among colloidal particles or with bounding walls, resulting in a variety of unexpected phenomena. Furthermore, long range order in the matrix is distorted by the suspended particles, resulting in anisotropic response, and  unavoidable topological defects that must move with the particles. On the one hand, the existence of structure in the liquid matrix affords new opportunities for flow control, processing, and suspension stability. At the same time, and for the same reasons, efficient engineering of these systems requires major advances to our current understanding of nematic fluid colloids.

The figure above (left) shows the spatial charge distribution induced by a (+1, -1) disclination pair under a uniform but oscillatory electric field normal to the line joining the defects. A (+1) disclination represents a suspended particle with homeotropic anchoring, and the (-1) disclination is the associated hyperbolic hedgehog. Both defects lead to spatial charge separation which, in turn, results in streaming flows (figure on the right), resulting in transport normal to the direction of the applied field [[[CO17]|http://pubs.rsc.org/en/content/articlelanding/2017/sm/c6sm02393b#!divAbstract]]. Thus a nematic matrix allows nonlinear anisotropic hydrodynamic mobilities. Effects like this one are being developed to engineer designer flows for use in microfluidic devices, including particle sorting and aggregation (including cell sorting), and stirring and the micro scale [[[PE15]|http://journals.aps.org/pre/abstract/10.1103/PhysRevE.92.052502]]. The same effects are being investigated to control, dynamically and on demand, the motion of self-propelled (or active) particles such as swimming bacteria in a nematic matrix [[[CO18]|http://homepages.spa.umn.edu/~vinals/mss/ck8.pdf]].
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>>
|border-right:0px;vertical-align:top;padding:15px;<br><br>School of Physics and Astronomy<br>University of Minnesota<br>116 Church St. S.E.<br>Minneapolis, MN 55455<br>Office: Tate Hall 130-17<br>(612) 624-9074<br>(612) 624-4578 (FAX)<br>vin&#97;ls&#64;&#117;mn.ed&#117;<br><br><br><br>[[Campus Map|https://goo.gl/maps/8PCy5gNpdYk]]<br>[[Campus webcam|http://cse.umn.edu/dashboard/webcam/]]<br><br>[[School of Physics Home Page|http://www.physics.umn.edu/]]<br>[[Minnesota Supercomputing Institute|http://www.msi.umn.edu]]|border-left-width:0;border-bottom:0px;padding:15px; [img(90%+,auto)[http://homepages.spa.umn.edu/~vinals/images/P1010104_small.jpg]]|
|~|border-left:0px;border-top:0px; Jorge at George's Mill in Sneinton |
|Author|Eric Shulman|
|Description|adds support for resizing images|
This plugin adds optional syntax to scale an image to a specified width and height and/or interactively resize the image with the mouse.
The extended image syntax is:
where ''(w,h)'' indicates the desired width and height (in CSS units, e.g., px, em, cm, in, or %). Use ''auto'' (or a blank value) for either dimension to scale that dimension proportionally (i.e., maintain the aspect ratio). You can also calculate a CSS value 'on-the-fly' by using a //javascript expression// enclosed between """{{""" and """}}""". Appending a plus sign (+) to a dimension enables interactive resizing in that dimension (by dragging the mouse inside the image). Use ~SHIFT-click to show the full-sized (un-scaled) image. Use ~CTRL-click to restore the starting size (either scaled or full-sized).
[<img(21% ,+)[images/meow.gif]]
[<img(13%+, )[images/meow.gif]]
[<img( 8%+, )[images/meow.gif]]
[<img( 5% , )[images/meow.gif]]
[<img( 3% , )[images/meow.gif]]
[<img( 2% , )[images/meow.gif]]
[img(  1%+,+)[images/meow.gif]]
[<img(21% ,+)[images/meow.gif]]
[<img(13%+, )[images/meow.gif]]
[<img( 8%+, )[images/meow.gif]]
[<img( 5% , )[images/meow.gif]]
[<img( 3% , )[images/meow.gif]]
[<img( 2% , )[images/meow.gif]]
[img(  1%+,+)[images/meow.gif]]
2011.09.03 [1.2.3] bypass addStretchHandlers() if no '+' suffix is used (i.e., not resizable)
2010.07.24 [1.2.2] moved tip/dragtip text to config.formatterHelpers.imageSize object to enable customization
2009.02.24 [1.2.1] cleanup width/height regexp, use '+' suffix for resizing
2009.02.22 [1.2.0] added stretchable images
2008.01.19 [1.1.0] added evaluated width/height values
2008.01.18 [1.0.1] regexp for "(width,height)" now passes all CSS values to browser for validation
2008.01.17 [1.0.0] initial release
version.extensions.ImageSizePlugin= {major: 1, minor: 2, revision: 3, date: new Date(2011,9,3)};
var f=config.formatters[config.formatters.findByField("name","image")];
f.handler=function(w) {
	this.lookaheadRegExp.lastIndex = w.matchStart;
	var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
	if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
		var floatLeft=lookaheadMatch[1];
		var floatRight=lookaheadMatch[2];
		var width=lookaheadMatch[3];
		var height=lookaheadMatch[4];
		var tooltip=lookaheadMatch[5];
		var src=lookaheadMatch[6];
		var link=lookaheadMatch[7];

		// Simple bracketted link
		var e = w.output;
		if(link) { // LINKED IMAGE
			if (config.formatterHelpers.isExternalLink(link)) {
				if (config.macros.attach && config.macros.attach.isAttachment(link)) {
					// see [[AttachFilePluginFormatters]]
					e = createExternalLink(w.output,link);
					e.title = config.macros.attach.linkTooltip + link;
				} else
					e = createExternalLink(w.output,link);
			} else 
				e = createTiddlyLink(w.output,link,false,null,w.isStatic);

		var img = createTiddlyElement(e,"img");
		if(floatLeft) img.align="left"; else if(floatRight) img.align="right";
		if(width||height) {
			var x=width.trim(); var y=height.trim();
			var stretchW=(x.substr(x.length-1,1)=='+'); if (stretchW) x=x.substr(0,x.length-1);
			var stretchH=(y.substr(y.length-1,1)=='+'); if (stretchH) y=y.substr(0,y.length-1);
			if (x.substr(0,2)=="{{")
				{ try{x=eval(x.substr(2,x.length-4))} catch(e){displayMessage(e.description||e.toString())} }
			if (y.substr(0,2)=="{{")
				{ try{y=eval(y.substr(2,y.length-4))} catch(e){displayMessage(e.description||e.toString())} }
			img.style.width=x.trim(); img.style.height=y.trim();
			if (stretchW||stretchH) config.formatterHelpers.addStretchHandlers(img,stretchW,stretchH);
		if(tooltip) img.title = tooltip;

		if (config.macros.attach && config.macros.attach.isAttachment(src))
			src=config.macros.attach.getAttachment(src); // see [[AttachFilePluginFormatters]]
		else if (config.formatterHelpers.resolvePath) { // see [[ImagePathPlugin]]
			if (config.browser.isIE || config.browser.isSafari) {
					return false;
			} else
		w.nextMatch = this.lookaheadRegExp.lastIndex;

	tip: 'SHIFT-CLICK=show full size, CTRL-CLICK=restore initial size',
	dragtip: 'DRAG=stretch/shrink, '

config.formatterHelpers.addStretchHandlers=function(e,stretchW,stretchH) {
	e.statusMsg='width=%0, height=%1';
	e.onmousedown=function(ev) { var ev=ev||window.event;
		return false;
	e.onmousemove=function(ev) { var ev=ev||window.event;
		if (this.sizing) {
			var s=this.style;
			var currX=!config.browser.isIE?ev.pageX:(ev.clientX+findScrollX());
			var currY=!config.browser.isIE?ev.pageY:(ev.clientY+findScrollY());
			var newW=(currX-this.offsetLeft)/(this.startX-this.offsetLeft)*this.startW;
			var newH=(currY-this.offsetTop )/(this.startY-this.offsetTop )*this.startH;
			if (this.stretchW) s.width =Math.floor(Math.max(newW,this.minW))+'px';
			if (this.stretchH) s.height=Math.floor(Math.max(newH,this.minH))+'px';
			clearMessage(); displayMessage(this.statusMsg.format([s.width,s.height]));
		return false;
	e.onmouseup=function(ev) { var ev=ev||window.event;
		if (ev.shiftKey) { this.style.width=this.style.height=''; }
		if (ev.ctrlKey)  { this.style.width=this.originalW; this.style.height=this.originalH; }
		return false;
	e.onmouseout=function(ev) { var ev=ev||window.event;
		return false;
|''Name:''|LoadRemoteFileThroughProxy (previous LoadRemoteFileHijack)|
|''Description:''|When the TiddlyWiki file is located on the web (view over http) the content of [[SiteProxy]] tiddler is added in front of the file url. If [[SiteProxy]] does not exist "/proxy/" is added. |
|''Date:''|mar 17, 2007|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
version.extensions.LoadRemoteFileThroughProxy = {
 major: 1, minor: 1, revision: 0, 
 date: new Date("mar 17, 2007"), 
 source: "http://tiddlywiki.bidix.info/#LoadRemoteFileThroughProxy"};

if (!window.bidix) window.bidix = {}; // bidix namespace
if (!bidix.core) bidix.core = {};

bidix.core.loadRemoteFile = loadRemoteFile;
loadRemoteFile = function(url,callback,params)
 if ((document.location.toString().substr(0,4) == "http") && (url.substr(0,4) == "http")){ 
 url = store.getTiddlerText("SiteProxy", "/proxy/") + url;
 return bidix.core.loadRemoteFile(url,callback,params);
[[Research|Current Research Areas]]
[[Preprints|Preprints of Recent Research]]
[[Publication Archive]]
[[Tag Cloud]]
|''Description:''|Extends TiddlyWiki options with non encrypted password option.|
|''Date:''|Apr 19, 2007|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0 (Beta 5)|
version.extensions.PasswordOptionPlugin = {
	major: 1, minor: 0, revision: 2, 
	date: new Date("Apr 19, 2007"),
	source: 'http://tiddlywiki.bidix.info/#PasswordOptionPlugin',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	license: '[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D]]',
	coreVersion: '2.2.0 (Beta 5)'

config.macros.option.passwordCheckboxLabel = "Save this password on this computer";
config.macros.option.passwordInputType = "password"; // password | text
setStylesheet(".pasOptionInput {width: 11em;}\n","passwordInputTypeStyle");

merge(config.macros.option.types, {
	'pas': {
		elementType: "input",
		valueField: "value",
		eventName: "onkeyup",
		className: "pasOptionInput",
		typeValue: config.macros.option.passwordInputType,
		create: function(place,type,opt,className,desc) {
			// password field
			// checkbox linked with this password "save this password on this computer"
			// text savePasswordCheckboxLabel
		onChange: config.macros.option.genericOnChange

merge(config.optionHandlers['chk'], {
	get: function(name) {
		// is there an option linked with this chk ?
		var opt = name.substr(3);
		if (config.options[opt]) 
		return config.options[name] ? "true" : "false";

merge(config.optionHandlers, {
	'pas': {
 		get: function(name) {
			if (config.options["chk"+name]) {
				return encodeCookie(config.options[name].toString());
			} else {
				return "";
		set: function(name,value) {config.options[name] = decodeCookie(value);}

// need to reload options to load passwordOptions

if (!config.options['pasPassword'])
	config.options['pasPassword'] = '';

		pasPassword: "Test password"
|Name|Plugin: Scientific Notation|
|Created by|BobMcElrath|
|Email|my first name at my last name dot org|
|Requires|[[TiddlyWiki|http://www.tiddlywiki.com]] &ge; 2.0.3, [[jsMath|http://www.math.union.edu/~dpvc/jsMath/]] &ge; 3.0, [[Plugin: jsMath]]|
This plugin will render numbers expressed in scientific notation, such as {{{3.5483e12}}} using the jsMath plugin to display it in an intuitive way such as 3.5483e12.  You may customize the number of significant figures displayed, as well as "normalize" numbers so that {{{47392.387e9}}} is displayed as 47392.387e9.
Install the Requirements, above, add this tiddler to your tiddlywiki, and give it the {{{systemConfig}}} tag.
* 1-Feb-06, version 1.0, Initial release
  name: "scientificNotation",
  match: "\\b[0-9]+\\.[0-9]+[eE][+-]?[0-9]+\\b",
  element: "span",
  className: "math",
  normalize: true,                          // set to 'true' to convert numbers to X.XXX \times 10^{y}
  sigfigs: 3,                               // with this many digits in the mantissa
  handler: function(w) {
    var snRegExp = new RegExp("\\b([0-9]+(?:\\.[0-9]+)?)[eE]([-0-9+]+)\\b");
    var mymatch = snRegExp.exec(w.matchText);
    var mantissa = mymatch[1];
    var exponent = parseInt(mymatch[2]);
    // normalize the number.
    if(this.normalize) {
      mantissa = parseFloat(mantissa);
      while(mantissa > 10.0) {
        mantissa = mantissa / 10.0;
      while(mantissa < 1.0) {
        mantissa = mantissa * 10.0;
      var sigfigsleft = this.sigfigs;
      mantissa = parseInt(mantissa) + "." + (Math.round(Math.pow(10,this.sigfigs-1)*mantissa)+"").substr(1,this.sigfigs-1);
    var e = document.createElement(this.element);
    e.className = this.className;
    if(exponent == 0) {
    } else {
      e.appendChild(document.createTextNode(mantissa + "\\times 10^{" + exponent + "}"));
|Name|Plugin: arXiv Links|
|Created by|BobMcElrath|
|Email|my first name at my last name dot org|
|Requires|[[TiddlyWiki|http://www.tiddlywiki.com]] &ge; 2.0.3|
This formatting plugin will render links to the [[arXiv|http://www.arxiv.org]] preprint system.  If you type a paper reference such as hep-ph/0509024, it will be rendered as an external link to the abstract of that paper.
Add this tiddler to your tiddlywiki, and give it the {{{systemConfig}}} tag.
* 1-Feb-06, version 1.0, Initial release
  name: "arXivLinks",
  match: "\\b(?:astro-ph|cond-mat|hep-ph|hep-th|hep-lat|gr-qc|nucl-ex|nucl-th|quant-ph|(?:cs|math|nlin|physics|q-bio)(?:\\.[A-Z]{2})?)/[0-9]{7}\\b",
  element: "a",
  handler: function(w) {
    var e = createExternalLink(w.output, "http://arxiv.org/abs/"+w.matchText);
    e.target = "_blank"; // open in new window
|Name|Plugin: jsMath|
|Created by|BobMcElrath|
|Email|my first name at my last name dot org|
|Requires|[[TiddlyWiki|http://www.tiddlywiki.com]] &ge; 2.0.3, [[jsMath|http://www.math.union.edu/~dpvc/jsMath/]] &ge; 3.0|
LaTeX is the world standard for specifying, typesetting, and communicating mathematics among scientists, engineers, and mathematicians.  For more information about LaTeX itself, visit the [[LaTeX Project|http://www.latex-project.org/]].  This plugin typesets math using [[jsMath|http://www.math.union.edu/~dpvc/jsMath/]], which is an implementation of the TeX math rules and typesetting in javascript, for your browser.  Notice the small button in the lower right corner which opens its control panel.
In addition to this plugin, you must also [[install jsMath|http://www.math.union.edu/~dpvc/jsMath/download/jsMath.html]] on the same server as your TiddlyWiki html file.  If you're using TiddlyWiki without a web server, then the jsMath directory must be placed in the same location as the TiddlyWiki html file.

I also recommend modifying your StyleSheet use serif fonts that are slightly larger than normal, so that the math matches surrounding text, and \\small fonts are not unreadable (as in exponents and subscripts).
.viewer {
  line-height: 125%;
  font-family: serif;
  font-size: 12pt;

You may also optionally add the following code to load jsMath in [[MarkupPostHead]] if you desire.
<script src="jsMath/jsMath.js"></script>
[[Plugin: jsMath]] will normally load jsMath dynamically using AJAX, but adding the above in [[MarkupPostHead]] may be useful if you have jsMath stored in a non-standard location, or if your browser's cross-site origin policy forbids loading files from file URL's using AJAX.  (e.g. Google Chrome)  
* 11-Nov-05, version 1.0, Initial release
* 22-Jan-06, version 1.1, updated for ~TW2.0, tested with jsMath 3.1, editing tiddlywiki.html by hand is no longer necessary.
* 24-Jan-06, version 1.2, fixes for Safari, Konqueror
* 27-Jan-06, version 1.3, improved error handling, detect if ajax was already defined (used by ZiddlyWiki)
* 12-Jul-06, version 1.4, fixed problem with not finding image fonts
* 26-Feb-07, version 1.5, fixed problem with Mozilla "unterminated character class".
* 27-Feb-07, version 1.5.1, Runs compatibly with TW 2.1.0+, by Bram Chen
* 5-May-11, version 1.6, Use a script tag to load in Chrome, use jQuery for ajax
|{{{The variable $x$ is real.}}}|The variable $x$ is real.|
|{{{The variable \(y\) is complex.}}}|The variable \(y\) is complex.|
|{{{This \[\int_a^b x = \frac{1}{2}(b^2-a^2)\] is an easy integral.}}}|This \[\int_a^b x = \frac{1}{2}(b^2-a^2)\] is an easy integral.|
|{{{This $$\int_a^b \sin x = -(\cos b - \cos a)$$ is another easy integral.}}}|This $$\int_a^b \sin x = -(\cos b - \cos a)$$ is another easy integral.|
|{{{Block formatted equations may also use the 'equation' environment \begin{equation}  \int \tan x = -\ln \cos x \end{equation} }}}|Block formatted equations may also use the 'equation' environment \begin{equation}  \int \tan x = -\ln \cos x \end{equation}|
|{{{Equation arrays are also supported \begin{eqnarray} a &=& b \\ c &=& d \end{eqnarray} }}}|Equation arrays are also supported \begin{eqnarray} a &=& b \\ c &=& d \end{eqnarray} |
|{{{I spent \$7.38 on lunch.}}}|I spent \$7.38 on lunch.|
|{{{I had to insert a backslash (\\) into my document}}}|I had to insert a backslash (\\) into my document|

// Load jsMath
if(typeof jsMath == 'undefined') {
  jsMath = {
    Setup: {inited: 1},          // don't run jsMath.Setup.Body() yet
    Autoload: {root: new String(document.location).replace(/[^\/]*$/,'jsMath/')}  // URL to jsMath directory, change if necessary
  try {
    jQuery.ajax({url: jsMath.Autoload.root+"jsMath.js", dataType: 'script',
                 async: false, error: function(j, s, e) { throw(e); } });
    jsMath.Setup.inited=0;  //  allow jsMath.Setup.Body() to run again
  } catch(e) {
    if(navigator.userAgent.toLowerCase().indexOf('chrome') > -1
        && document.location.toString().indexOf('file') == 0) {
      var jsMathScript = '<!--{{{-->\n<script src="jsMath/jsMath.js"></script>\n<!--}}}-->';
      var MarkupPostHead = store.fetchTiddler("MarkupPostHead");
      if(MarkupPostHead && !MarkupPostHead.match(jsMathScript)) {
        MarkupPostHead.text += jsMathScript;
      } else {
        MarkupPostHead = store.createTiddler("MarkupPostHead");
        MarkupPostHead.text = jsMathScript;
      throw("jsMath added to MarkupPostHead: now save and reload (Google Chrome cross origin file:/// URL workaround)");
    } else {
      alert("jsMath was not found: you must place the 'jsMath' directory in the same place as this file.  "
           +"The error was:\n"+e.name+": "+e.message);
      throw(e);  // abort eval

// Define wikifers for latex
config.formatterHelpers.mathFormatHelper = function(w) {
    var e = document.createElement(this.element);
    e.className = this.className;
    var endRegExp = new RegExp(this.terminator, "mg");
    endRegExp.lastIndex = w.matchStart+w.matchLength;
    var matched = endRegExp.exec(w.source);
    if(matched) {
        var txt = w.source.substr(w.matchStart+w.matchLength, 
        if(this.keepdelim) {
          txt = w.source.substr(w.matchStart, matched.index+matched[0].length-w.matchStart);
        w.nextMatch = endRegExp.lastIndex;

  name: "displayMath1",
  match: "\\\$\\\$",
  terminator: "\\\$\\\$\\n?", // 2.0 compatability
  termRegExp: "\\\$\\\$\\n?",
  element: "div",
  className: "math",
  handler: config.formatterHelpers.mathFormatHelper

  name: "inlineMath1",
  match: "\\\$", 
  terminator: "\\\$", // 2.0 compatability
  termRegExp: "\\\$",
  element: "span",
  className: "math",
  handler: config.formatterHelpers.mathFormatHelper

var backslashformatters = new Array(0);

  name: "inlineMath2",
  match: "\\\\\\\(",
  terminator: "\\\\\\\)", // 2.0 compatability
  termRegExp: "\\\\\\\)",
  element: "span",
  className: "math",
  handler: config.formatterHelpers.mathFormatHelper

  name: "displayMath2",
  match: "\\\\\\\[",
  terminator: "\\\\\\\]\\n?", // 2.0 compatability
  termRegExp: "\\\\\\\]\\n?",
  element: "div",
  className: "math",
  handler: config.formatterHelpers.mathFormatHelper

  name: "displayMath3",
  match: "\\\\begin\\{equation\\}",
  terminator: "\\\\end\\{equation\\}\\n?", // 2.0 compatability
  termRegExp: "\\\\end\\{equation\\}\\n?",
  element: "div",
  className: "math",
  handler: config.formatterHelpers.mathFormatHelper

// These can be nested.  e.g. \begin{equation} \begin{array}{ccc} \begin{array}{ccc} ...
  name: "displayMath4",
  match: "\\\\begin\\{eqnarray\\}",
  terminator: "\\\\end\\{eqnarray\\}\\n?", // 2.0 compatability
  termRegExp: "\\\\end\\{eqnarray\\}\\n?",
  element: "div",
  className: "math",
  keepdelim: true,
  handler: config.formatterHelpers.mathFormatHelper

// The escape must come between backslash formatters and regular ones.
// So any latex-like \commands must be added to the beginning of
// backslashformatters here.
    name: "escape",
    match: "\\\\.",
    handler: function(w) {
        w.nextMatch = w.matchStart+2;


window.wikify = function(source,output,highlightRegExp,tiddler)
    if(source && source != "") {
        if(version.major == 2 && version.minor > 0) {
            var wikifier = new Wikifier(source,getParser(tiddler),highlightRegExp,tiddler);
        } else {
            var wikifier = new Wikifier(source,formatter,highlightRegExp,tiddler);
!! Topological defect motion, microstructure, and stress response in materials
* [[Impact of lattice rotation on dislocation motion|http://homepages.spa.umn.edu/~vinals/mss/bp1.pdf]].
* [[Dislocation dynamics and crystal plasticity in the phase field crystal model|http://homepages.spa.umn.edu/~vinals/mss/as1.pdf]].
* [[Separation of elastic and plastic time scales in a phase field crystal model|http://homepages.spa.umn.edu/~vinals/mss/as2.pdf]].
* [[Curvature driven evolution of a smectic-A/isotropic interface out of thermodynamic equilibrium|http://homepages.spa.umn.edu/~vinals/mss/ev1.pdf]].
!! Transport in nematic suspensions
* [[Liquid crystals with patterned molecular orientation as an electrolytic active medium|http://homepages.spa.umn.edu/~vinals/mss/ActiveLC_Sept_29_2015.pdf]].
* [[Electrokinetic flows in liquid crystal thin films with fixed anchoring|http://homepages.spa.umn.edu/~vinals/mss/ck2.pdf]]
* [[Nonlinear electrophoresis of colloids controlled by anisotropy of conductivity and permittivity of liquid crystal electrolyte|http://homepages.spa.umn.edu/~vinals/mss/ck5.pdf]]
* [[Q-tensor model for electrokinetics in nematic liquid crystals|http://homepages.spa.umn.edu/~vinals/mss/1612.03446v1.pdf]].
* [[Electrokinetic effects in nematic suspensions: Single particle electroosmosis and inter particle interactions|http://homepages.spa.umn.edu/~vinals/mss/ck7.pdf]].
* [[A connection between Living Liquid Crystals and electrokinetic phenomena in nematic fluids|http://homepages.spa.umn.edu/~vinals/mss/ck8.pdf]].
!!Sample presentations
* [[Mesoscale description of defected materials|http://homepages.spa.umn.edu/~vinals/mss/ima_09142012.pdf]]. IMA Hot Topics Special Workshop: Mathematics and the Materials Genome Initiative.
* [[Pattern formation in mesophases|http://homepages.spa.umn.edu/~vinals/mss/msu-uab_10042012.pdf]]. 9th ~MSU-UAB Conference on Differential Equations and Computational Simulations.
* [[Liquid crystal electro osmosis|http://homepages.spa.umn.edu/~vinals/mss/siam_11MAY2016.pdf]]. SIAM Conference on the Mathematical Aspects of Materials Science.
* [[Mesoscale models and defect motion|http://homepages.spa.umn.edu/~vinals/mss/cmu_30SEP2016.pdf]]. Department of Civil and Environmental Engineering. Carnegie Mellon University.
* [[Liquid crystal electro kinetics|http://homepages.spa.umn.edu/~vinals/mss/cnls_3MAY2017.pdf]]. Center for Nonlinear Studies, Los Alamos National Laboratory.
* [[Mesoscale defects and transport|http://homepages.spa.umn.edu/~vinals/mss/ef_15JUN2017.pdf]]. ~EarthFlows 2017.

# J. Viñals, R.F. Sekerka, and P. Debroy. [[Morphological stability analysis of directional solidification in thin samples with lateral heat transfer|http://dx.doi.org/10.1016/0022-0248(88)90200-X]]. //J. Crystal Growth// ''89'', 405 (1988).
# J. Viñals and D. Jasnow. [[Dynamical scaling during interfacial growth following a morphological instability|http://journals.aps.org/pra/abstract/10.1103/PhysRevA.40.3864]]. //Phys. Rev. A// ''40'', 3864 (1989). 
# W.W. Mullins and J. Viñals. [[Self-similarity and growth kinetics driven by surface free energy reduction|http://dx.doi.org/10.1016/0001-6160(89)90096-5]]. //Acta metall.// ''37'', 991 (1989).
# P.H. Leo, W.W. Mullins, R.F. Sekerka, and J. Viñals. [[Effect of elasticity on late stage coarsening|http://dx.doi.org/10.1016/0956-7151(90)90125-Z]]. //Acta metall. mater.// ''38'', 1573 (1990).
# D. Jasnow and  Viñals. [[Dynamical scaling during interfacial growth in the one-sided model|http://journals.aps.org/pra/abstract/10.1103/PhysRevA.41.6910]]. //Phys. Rev. A// ''41'', 6910 (1990).
# J. Viñals, E. Hernandez Garcia, M. San Miguel, and R. Toral. [[Numerical study of the dynamical aspects of pattern selection in the stochastic ~Swift-Hohenberg equation in one dimension|http://dx.doi.org/10.1103/PhysRevA.44.1123]]. //Phys. Rev. A// ''44'', 1123 (1991).
# H.-W. Xi, J. Vi&ntilde;als, and J.D. Gunton. [[Numerical solution of the ~Swift-Hohenberg equation in two dimensions|http://dx.doi.org/10.1016/0378-4371(91)90173-A]]. //Physica A// ''177'', 356 (1991).
# K.R. Elder, J. Vi&ntilde;als, and M. Grant. [[Ordering Dynamics in the Two-Dimensional Stochastic Swift-Hohenberg Equation|http://dx.doi.org/10.1103/PhysRevLett.68.3024]]. //Phys. Rev. Lett.// ''68'', 3024 (1992).
# J.M. Rickman, J. Viñals, R.F. Sekerka, and W.W. Mullins. [[Effects of long-range crystalline order on collective diffusion in binary solids|http://dx.doi.org/10.1103/PhysRevB.45.7750]]. //Phys. Rev. B// ''45'', 7750 (1992).
# J. Vi&ntilde;als and D. Jasnow. [[Coarsening following a morphological instability in the one-sided model|http://dx.doi.org/10.1103/PhysRevA.46.7777]]. //Phys. Rev. A// ''46'', 7777 (1992).
# J. Vi&ntilde;als, H.-W. Xi, and J.D. Gunton. [[Numerical study of the influence of forcing terms and fluctuations near onset on the roll pattern in Rayleigh-Bénard convection in a simple fluid|http://dx.doi.org/10.1103/PhysRevA.46.918]]. //Phys. Rev. A// ''46'', 918 (1992).
# H. Xi, J. Viñals and J.D. Gunton. [[Numerical study of pattern formation following a convective instability in non-Boussinesq fluids|http://dx.doi.org/10.1103/PhysRevA.46.R4483]]. //Phys. Rev. A// ''46'', R4483 (1992).
# K.R. Elder, J. Viñals and M. Grant. [[Dynamic scaling and quasiordered states in the two-dimensional Swift-Hohenberg equation|http://dx.doi.org/10.1103/PhysRevA.46.7618]]. //Phys. Rev. A// ''46'', 7618 (1992).
# M. Lacasse, J. Viñals and M. Grant. [[Dynamic Monte Carlo renormalization-group method|http://dx.doi.org/10.1103/PhysRevB.47.5646]].  //Phys. Rev. B// ''47'', 5646 (1993).
# W.W. Mullins and J. Viñals. [[Scaling in linear bubble models of grain growth|http://dx.doi.org/10.1016/0956-7151(93)90245-N]]. //Acta metall. mater.// ''41'', 1359 (1993).
# H.-W. Xi, J.D. Gunton and J. Viñals. [[Spiral-pattern formation in Rayleigh-Benard Convection|http://dx.doi.org/10.1103/PhysRevE.47.R2987]]. //Phys. Rev. E// ''47'', R2987 (1993).
# E. ~Hernandez-Garcia, J. Viñals, R. Toral and M. San Miguel. [[Fluctuations and Pattern Selection near an Eckhaus Instability|http://dx.doi.org/10.1103/PhysRevLett.70.3576]]. //Phys. Rev. Lett.// ''70'', 3576 (1993).
# H.-W. Xi, J.D. Gunton and J. Viñals. [[Pattern formation duringYourName Rayleigh-Bénard convection in non-Boussinesq fluids|http://arxiv.org/abs/patt-sol/9305001]]. arXiv.org:patt-sol/9305001 (1993).
# H. Xi, J.D. Gunton and J. Viñals. [[Spiral Defect Chaos in a Model of ~Rayleigh-Bénard Convection|http://dx.doi.org/10.1103/PhysRevLett.71.2030]]. //Phys. Rev. Lett.// ''71'', 2030 (1993).
# J. Casademunt, W. Zhang, J. Viñals and R.F. Sekerka. [[Stability of a fluid surface in a microgravity environment|http://arc.aiaa.org/doi/abs/10.2514/3.11886?journalCode=aiaaj]]. //AIAA J.// ''31'', 2027 (1993).
# W. Zhang, J. Casademunt and J. Viñals. [[Study of the parametric oscillator driven by narrow band noise to model the response of a fluid surface to time-dependent accelerations|http://link.aip.org/link/doi/10.1063/1.858723]]. //Phys. Fluids A// ''5'', 3147 (1993).
# J.R. Thomson, J. Casademunt and J. Viñals. [[Cavity flow induced by a fluctuating acceleration field|http://link.aip.org/link/doi/10.1063/1.868627]]. //Phys. Fluids A// ''7'', 292 (1995).
# W. Zhang and J. Viñals. [[Secondary Instabilities and Spatiotemporal Chaos in Parametric Surface Waves|http://dx.doi.org/10.1103/PhysRevLett.74.690]]. //Phys. Rev. Lett.// ''74'', 690 (1995).
# R. Chella and J. Viñals. [[Mixing of a two-phase fluid by cavity flow|http://dx.doi.org/10.1103/PhysRevE.53.3832]]. //Phys. Rev. E// ''53'', 3832 (1996).
# J.R. Thomson and J Viñals. [[Statistical saturation of buoyant flow induced by a fluctuating acceleration|http://arc.aiaa.org/doi/abs/10.2514/3.13176?journalCode=aiaaj]] . //AIAA J.// ''34'', 975 (1996).
# M. Gurtin, D. Polignone and J. Viñals. [[Two-phase binary fluids and immiscible fluids described by an order parameter|http://dx.doi.org/10.1142/S0218202596000341]]. //Mathematical Models and Methods in Applied Sciences// ''6'', 815 (1996). Also at [[arXiv:patt-sol/9506001|http://arxiv.org/abs/patt-sol/9506001]], [[here|http://homepages.spa.umn.edu/~vinals/mss/mort.ps]], or [[here|http://homepages.spa.umn.edu/~vinals/mss/m3as_6_815_1996.pdf]].
# D. Jasnow and J. Viñals. [[Coarse-grained description of thermo-capillary flow|http://link.aip.org/link/doi/10.1063/1.868851]]. //Phys. Fluids// ''8'', 660 (1996).
# W. Zhang and J. Viñals. [[Square patterns and quasipatterns in weakly damped Faraday waves|http://dx.doi.org/10.1103/PhysRevE.53.R4283]]. //Phys. Rev. E// ''53'', R4283 (1996).
# J.R. Thomson, J. Casademunt, F. Drolet and J. Viñals. [[Coarsening of solid-liquid mixtures in a random acceleration field|http://link.aip.org/link/doi/10.1063/1.869259]]. //Phys. Fluids// ''9'', 1336 (1997).
# W. Zhang and J. Viñals. [[Pattern formation in weakly damped parametric surface waves|http://dx.doi.org/10.1017/S0022112096004764]]. //J. Fluid Mech.// ''336'', 301 (1997).
# J.M. Rickman and J. Viñals. [[Modeling of dislocation structures in materials|http://dx.doi.org/10.1080/01418619708209855]]. //Phil. Mag. A// ''75'', 1251 (1997).
# W. Zhang and J. Viñals. [[Pattern formation in weakly damped parametric surface waves driven by two frequency components|http://dx.doi.org/10.1017/S0022112097005387]]. //J. Fluid Mech.// ''341'', 225 (1997).
# P. Chen and J. Viñals. [[Pattern selection in Faraday waves|http://dx.doi.org/10.1103/PhysRevLett.79.2670]]. //Phys. Rev. Lett.// ''79'', 2670 (1997).
# W. Zhang and J. Viñals. [[Numerical study of pattern formation in weakly damped parametric surface waves|http://dx.doi.org/10.1016/S0167-2789(97)00172-3]]. //Physica D// ''116'', 225 (1998).
# F. Drolet and J. Viñals. [[Onset of oscillatory instabilities under stochastic modulation|http://dx.doi.org/10.1103/PhysRevE.56.2649]]. //Phys. Rev. E// ''56'', 2649 (1997).
# J. Viñals and W.W. Mullins. [[Self-similarity and coarsening of three dimensional particles on a one or two dimensional matrix|http://link.aip.org/link/doi/10.1063/1.366751]]. //J. Appl. Phys.// ''83'', 621 (1998).
# F. Drolet and J. Viñals. [[Abiabatic reduction near a bifurcation in stochastically modulated systems|http://dx.doi.org/10.1103/PhysRevE.57.5036]]. //Phys. Rev. E// ''57'', 5036 (1998).
# P. Chen and J. Viñals. [[Amplitude equations and pattern selection in Faraday waves|http://dx.doi.org/10.1103/PhysRevE.60.559]]. //Phys. Rev. E// ''60'', 551 (1999).
# F. Drolet, P. Chen, and J. Viñals. [[Lamellae alignment by shear flow in a model of a diblock copolymer|http://dx.doi.org/10.1021/ma990448o]]. //Macromolecules// ''32'', 8603 (1999).
# H.-Y. Chen, D. Jasnow and J. Viñals. [[Interface and contact line motion in a two phase fluid under shear flow|http://dx.doi.org/10.1103/PhysRevLett.85.1686]]. //Phys. Rev. Lett.// ''85'', 1686 (2000).
# D. Volfson and J. Viñals. [[Flow induced by a randomly vibrating boundary|http://journals.cambridge.org/action/displayAbstract?fromPage=online&aid=78605]]. //J. Fluid Mech.// ''432'', 387 (2001).
# D. Boyer and J. Viñals. [[Grain boundary motion in layered phases|http://dx.doi.org/10.1103/PhysRevE.63.061704]]. //Phys. Rev. E// ''63'', 061704 (2001).
# D. Boyer and J. Viñals. [[Domain coarsening of stripe patterns close to onset|http://dx.doi.org/10.1103/PhysRevE.64.050101]]. //Phys. Rev. E// ''64'', 050101(R) (2001).
# F. Drolet and J. Viñals. [[Adiabatic elimination and reduced probability distribution functions in spatially extended systems with a fluctuating control parameter|http://dx.doi.org/10.1103/PhysRevE.64.026120]]. //Phys. Rev. E// ''64'', 026120 (2001).
# D. Volfson and J. Viñals. [[Morphological stability analysis of directional solidification into an oscillatory fluid layer|http://link.aip.org/link/doi/10.1063/1.1416883]]. //Phys. Fluids// ''13'', 3599 (2001).
# P. Chen and J. Viñals. [[Lamellar phase stability in diblock copolymers under oscillatory shear flows|http://dx.doi.org/10.1021/ma011586s]]. //Macromolecules// ''35'', 4183 (2002).
# D. Boyer and J. Viñals. [[Grain boundary pinning and glassy dynamics in stripe phases|http://dx.doi.org/10.1103/PhysRevE.65.046119]]. //Phys. Rev. E// ''65'', 046119 (2002).
# W.W. Mullins and J. Viñals. [[Linear bubble model of abnormal grain growth|http://dx.doi.org/10.1016/S1359-6454(02)00121-0]]. //Acta Materialia// ''50'', 2945 (2002).
# D. Boyer and J. Viñals. [[Weakly nonlinear theory of grain boundary motion in patterns with crystalline symmetry|http://dx.doi.org/10.1103/PhysRevLett.89.055501]]. //Phys. Rev. Lett.// ''89'', 055501 (2002).
# J. Viñals, A. Kolinski and J. Skolnick. [[Numerical study of the entropy loss of dimerization and the folding thermodynamics of the ~GCN4 leucine zipper|http://dx.doi.org/10.1016/S0006-3495(02)75289-2]]. //Biophys. J.// ''83'', 2801 (2002).
# Z.-F. Huang, F. Drolet and J. Viñals. [[Motion of a transverse/parallel grain boundary in a block copolymer under oscillatory shear flow|http://dx.doi.org/10.1021/ma034083q]]. //Macromolecules// ''36'', 9622 (2003).
# Z.-F. Huang and J. Viñals. [[Shear induced grain boundary motion for lamellar phases in the weakly nonlinear regime|http://dx.doi.org/10.1103/PhysRevE.69.041504]]. //Phys. Rev. E// ''69'', 041504 (2004).
# J.M. Vega, S. Ruediger, and J. Viñals. [[A phenomenological model of weakly damped Faraday waves and the associated mean flow|http://dx.doi.org/10.1103/PhysRevE.70.046306]]. //Phys. Rev. E// ''70'', 046306 (2004).
# J.M. Rickman, J. Viñals, and R. ~LeSar. [[Unified framework for dislocation-based defect energetics|http://dx.doi.org/10.1080/14786430412331314618]]. //Phil. Mag. A// ''85'', 917 (2005).
# Z.-F. Huang and J. Viñals. [[Tilt grain boundary instabilities in three dimensional lamellar patterns|http://dx.doi.org/10.1103/PhysRevE.71.031501]]. //Phys. Rev. E// ''71'', 031501 (2005).
# Z.-F. Huang and J. Viñals. [[Orientation selection in lamellar phases by oscillatory shears|http://dx.doi.org//10.1103/PhysRevE.73.060501]]. //Phys. Rev. E// ''73'', 060501(R) (2006).
# Z.-F. Huang and J. Viñals. [[Stability of parallel/perpendicular domain boundaries in lamellar block copolymers under oscillatory shear|http://dx.doi.org/10.1122/1.2399088]]. //J. Rheol.// ''51'', 99 (2007).
# Z.-F. Huang and J. Viñals. [[Grain boundary dynamics in stripe phases of non potential systems|http://dx.doi.org/10.1103/PhysRevE.75.056202]]. //Phys. Rev. E// ''75'', 056202 (2007).
# S.-S. Yeh, C. Hsueh, P. Chen, and J. Viñals. [[Field induced columnar structures in a quasi two dimensional system of dipolar particles|http://dx.doi.org/10.1103/PhysRevE.76.051407]]. //Phys. Rev. E// ''76'', 051407 (2007).
# R. Tamate, K. Yamada, J . Viñals, and T. Ohta. [[Structural rheology of microphase separated diblock copolymers|http://homepages.spa.umn.edu/~vinals/mss/JPSJ-77-034802.pdf]]. //J. Phys. Soc. Jpn.// ''73'', 034802 (2008).
# J . Viñals. [[Defect dynamics in mesophases|http://dx.doi.org/10.1143/JPSJ.78.041011]]. //J. Phys. Soc. Jpn.// ''78'', 041011 (2009).
# M. Gaudreault and J . Viñals. [[Collapse transition of a hydrophobic self avoiding random walk in a coarse-grained model solvent|http://dx.doi.org/10.1103/PhysRevE.80.021916]]. //Phys. Rev. E// ''80'', 021916 (2009).
# X. Zhang, Z.-F. Huang, and J . Viñals. [[Stability analysis of twist grain boundaries in lamellar phases of lamellar phases of block copolymers|http://homepages.spa.umn.edu/~vinals/mss/xz1_arxiv_0804.pdf]]. arXiv:0804.2091.
# M. Gaudreault, F. Lepine and J . Viñals. [[Pitchfork and Hopf bifurcation threshold in stochastic equations with delayed feedback|http://dx.doi.org/10.1103/PhysRevE.80.061920]]. //Phys. Rev. E// ''80'', 061920 (2009).
# M. Gaudreault, F. Drolet, and J . Viñals. [[Analytical determination of the bifurcation thresholds in stochastic differential equatoins with delayed feedback|http://dx.doi.org/10.1103/PhysRevE.82.051124]]. //Phys. Rev. E// ''82'', 051124 (2010).
# M. Gaudreault, J. Berbert, and J . Viñals. [[Correlation times in stochastic equations with delayed feedback and multiplicative noise|http://dx.doi.org/10.1103/PhysRevE.83.011903]]. //Phys. Rev. E// ''83'', 011903 (2011).
# M. Gaudreault, F. Drolet, and J . Viñals. [[Bifurcation threshold of the delayed van der Pol oscilaltor under stochastic modulation|http://link.aps.org/doi/10.1103/PhysRevE.85.056214]]. //Phys. Rev. E// ''85'', 056214 (2012).
# C.-D. Yoo and J . Viñals. [[Anisotropic linear response in block copolymer lamellar phases|http://dx.doi.org/10.1021/ma300547y]]. //Macromolecules// ''45'', 4848 (2012).
# C.-D. Yoo and J . Viñals. [[The role of viscoelastic contrast in orientation selection of block copolymer lamellar phases under oscillatory shear|http://dx.doi.org/10.1039/c3sm00099k]]. //Soft Matter// ''9'', 7817 (2013).
# C.-D. Yoo and J . Vi&ntilde;als. [[Extended constitutive laws for lamellar phases|http://ejde.math.txstate.edu/conf-proc/20/y1/abstr.html]]. //Electronic Journal of Differential Equations// ''2013(20)'', 165 (2013).
# C. Peng, Y. Guo, C. Conklin, J. Vi&ntilde;als, S. V. Shiyanovskii, Q. Wei and O. D. Lavrentovich. [[Liquid crystals with patterned molecular orientation as an electrolytic active medium|http://journals.aps.org/pre/abstract/10.1103/PhysRevE.92.052502]]. //Phys. Rev. E// ''92'', 052502 (2015).
# B. Perreault, J . Viñals, and J.M. Rickman. [[Impact of lattice rotation on dislocation motion|http://link.aps.org/doi/10.1103/PhysRevB.93.014107]]. //Phys. Rev. B// ''93'', 014107 (2016).
# C. Conklin and J. Vi&ntilde;als. [[Electrokinetic flows in liquid crystal thin films with fixed anchoring|http://pubs.rsc.org/en/content/articlelanding/2017/sm/c6sm02393b#!divAbstract]]. //Soft Matter// ''13'', 725 (2017).
# S. Paladugu, C. Conklin, J. Vi&ntilde;als, and O. D. Lavrentovich. [[Nonlinear electrophoresis of colloids controlled by anisotropy of conductivity and permittivity of liquid crystal electrolyte|https://journals.aps.org/prapplied/abstract/10.1103/PhysRevApplied.7.034033]]. //Phys. Rev. Applied// ''7'', 034033 (2017).
# Oleh M. Tovkach, Christopher Conklin, M. Carme Calderer, Dmitry Golovaty, Oleg D. Lavrentovich, Jorge Vi&ntilde;als, Noel J. Walkington. [[Q-tensor model for electrokinetics in nematic liquid crystals|https://journals.aps.org/prfluids/abstract/10.1103/PhysRevFluids.2.053302]]. //Phys. Rev. Fluids// ''2'', 053302 (2017).
# A. Skaugen, L. Angheluta, and J. Vi&ntilde;als. [[Dislocation dynamics and crystal plasticity in the phase field crystal model|https://journals.aps.org/prb/abstract/10.1103/PhysRevB.97.054113]]. //Phys. Rev. B// ''97'', 054113 (2018).
# Christopher Conklin, Oleh M. Tovkach, M. Carme Calderer, Dmitry Golovaty, Oleg D. Lavrentovich, Jorge Vi&ntilde;als, Noel J. Walkington. [[Electrokinetic effects in nematic suspensions: Single particle electroosmosis and inter particle interactions|https://journals.aps.org/pre/abstract/10.1103/PhysRevE.98.022703]].  //Phys. Rev. E// ''98'', 022703 (2018).
# Christopher Conklin, Jorge Vi&ntilde;als, and Oriol T. Valls. [[A connection between Living Liquid Crystals and electrokinetic phenomena in nematic fluids|http://pubs.rsc.org/en/content/articlehtml/2018/sm/c7sm02492d]]. //Soft Matter// ''14'', 4641 (2018).
# A. Skaugen, L. Angheluta, and J. Vi&ntilde;als. [[Separation of elastic and plastic times scales in a phase field crystal model|http://homepages.spa.umn.edu/~vinals/mss/as2.pdf]]. //Phys. Rev. Lett.//, in press.
# E. Vitral, P.Leo, and Vi&ntilde;als. [[Curvature driven evolution of a smectic-A/isotropic interface out of thermodynamic equilibrium|http://homepages.spa.umn.edu/~vinals/mss/ev1.pdf]]. Submitted to //Phys. Rev. X//.
[[Group Site|http://vtcnls.tiddlyspot.com]]
[[Nematic Colloids (OSF)|https://osf.io/8hcpe/]]
[[Personal Site|http://jv2037.tiddlyspot.com]]
[[PHYS 4041|http://phys4041.tiddlyspot.com]]
[[PHYS 5201|http://phys5201.tiddlyspot.com]]
[[PHYS 8702|http://phys8702.tiddlyspot.com]]
!!!Conference Information
[[Soft Matter|http://soft-matter.us/]]
[[Physics calendar|http://www.conference-service.com/conferences/physics.html]]
[[International Society for Computational Biology|http://www.iscb.org/iscb-conference-events]]
School of Physics and Astronomy. University of Minnesota.
Jorge Vi&ntilde;als
.viewer img { padding-left:1em; padding-right:1em; } 

A:link {text-decoration: none}
A:visited {text-decoration: none}
A:active {text-decoration: none}
A:hover {text-decoration: underline;}
/* A:hover {text-decoration: underline; 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;}

#mainMenu {margin:1em; text-align:left;}
/* #mainMenu {margin:1em; text-align:left; border-style:solid;border-width:thin;border-color:#0000f0} */
 <<cloud systemConfig systemTiddlers DiscoveryPackage IconPackage NavigationPackage>>
|Author|Eric Shulman|
|Original Author|Clint Checketts|
|Description|present a 'cloud' of tags (or links) using proportional font display|
<<cloud type action:... limit:... tag tag tag ...>>
<<cloud type action:... limit:... +TiddlerName>>
<<cloud type action:... limit:... -TiddlerName>>
<<cloud type action:... limit:... =tagvalue>>
* //type// is a keyword, one of:
** ''tags'' (default) - displays a cloud of tags, based on frequency of use
** ''links'' - displays a cloud of tiddlers, based on number of links //from// each tiddler
** ''references'' - displays a cloud of tiddlers, based on number of links //to// each tiddler
* ''action:popup'' (default) - clicking a cloud item shows a popup with links to related tiddlers<br>//or//<br> ''action:goto'' - clicking a cloud item immediately opens the tiddler corresponding to that item
* ''limit:N'' (optional) - restricts the cloud display to only show the N most popular tags/links
* ''tag tag tag...'' (or ''title title title'' if ''links''/''references'' is used)<br>shows all tags/links in the document //except// for those listed as macro parameters
* ''+TiddlerName''<br>show only tags/links read from a space-separated, bracketed list stored in a separate tiddler.
* ''-TiddlerName''<br>show all tags/links //except// those read from a space-separated, bracketed list stored in a separate tiddler.
* ''=tagvalue'' (//only if type=''tags''//)<br>shows only tags that are themselves tagged with the indicated tag value (i.e., ~TagglyTagging usage)
//note: for backward-compatibility, you can also use the macro {{{<<tagCloud ...>>}}} in place of {{{<<cloud ...>>}}}//
//all tags excluding<<tag systemConfig>>, <<tag excludeMissing>> and <<tag script>>//
{{{<<cloud systemConfig excludeMissing script>>}}}
{{groupbox{<<cloud systemConfig excludeMissing script>>}}}
//top 10 tags excluding<<tag systemConfig>>, <<tag excludeMissing>> and <<tag script>>//
{{{<<cloud limit:10 systemConfig excludeMissing script>>}}}
{{groupbox{<<cloud limit:10 systemConfig excludeMissing script>>}}}
//tags listed in// [[FavoriteTags]]
{{{<<cloud +FavoriteTags>>}}}
{{groupbox{<<cloud +FavoriteTags>>}}}
//tags NOT listed in// [[FavoriteTags]]
{{{<<cloud -FavoriteTags>>}}}
{{groupbox{<<cloud -FavoriteTags>>}}}
//links to tiddlers tagged with 'package'//
{{{<<cloud action:goto =package>>}}}
{{groupbox{<<cloud action:goto =package>>}}}
//top 20 most referenced tiddlers//
{{{<<cloud references limit:20>>}}}
{{groupbox{<<cloud references limit:20>>}}}
//top 20 tiddlers that contain the most links//
{{{<<cloud links limit:20>>}}}
{{groupbox{<<cloud links limit:20>>}}}
2009.07.17 [1.7.0] added {{{-TiddlerName}}} parameter to exclude tags that are listed in the indicated tiddler
2009.02.26 [1.6.0] added {{{action:...}}} parameter to apply popup vs. goto action when clicking cloud items
2009.02.05 [1.5.0] added ability to show links or back-links (references) instead of tags and renamed macro to {{{<<cloud>>}}} to reflect more generalized usage.
2008.12.16 [1.4.2] corrected group calculation to prevent 'group=0' error
2008.12.16 [1.4.1] revised tag filtering so excluded tags don't affect calculations
2008.12.15 [1.4.0] added {{{limit:...}}} parameter to restrict the number of tags displayed to the top N most popular
2008.11.15 [1.3.0] added {{{+TiddlerName}}} parameter to include only tags that are listed in the indicated tiddler
2008.09.05 [1.2.0] added '=tagname' parameter to include only tags that are themselves tagged with the specified value (i.e., ~TagglyTagging usage)
2008.07.03 [1.1.0] added 'segments' property to macro object.  Extensive code cleanup
version.extensions.TagCloudPlugin= {major: 1, minor: 7 , revision: 0, date: new Date(2009,7,17)};
//Originally created by Clint Checketts, contributions by Jonny Leroy and Eric Shulman
//Currently maintained and enhanced by Eric Shulman
config.macros.cloud = {
	tagstip: "%1 tiddlers tagged with '%0'",
	refslabel: " (%0 references)",
	refstip: "%1 tiddlers have links to '%0'",
	linkslabel: " (%0 links)",
	linkstip: "'%0' has links to %1 other tiddlers",
	groups: 9,
	init: function() {
		config.macros.tagCloud=config.macros.cloud; // for backward-compatibility
			+'.tagCloud span {line-height: 3.5em; margin:3px;}\n'
			+'.tagCloud1{font-size: 80%;}\n'
			+'.tagCloud2{font-size: 100%;}\n'
			+'.tagCloud3{font-size: 120%;}\n'
			+'.tagCloud4{font-size: 140%;}\n'
			+'.tagCloud5{font-size: 160%;}\n'
			+'.tagCloud6{font-size: 180%;}\n'
			+'.tagCloud7{font-size: 200%;}\n'
			+'.tagCloud8{font-size: 220%;}\n'
			+'.tagCloud9{font-size: 240%;}\n'
	getLinks: function(tiddler) { // get list of links to existing tiddlers and shadows
		if (!tiddler.linksUpdated) tiddler.changed();
		var list=[]; for (var i=0; i<tiddler.links.length; i++) {
			var title=tiddler.links[i];
			if (store.isShadowTiddler(title)||store.tiddlerExists(title))
		return list;
	handler: function(place,macroName,params) {
		// unpack params
		var inc=[]; var ex=[]; var limit=0; var action='popup';
		var links=(params[0]&&params[0].toLowerCase()=='links'); if (links) params.shift();
		var refs=(params[0]&&params[0].toLowerCase()=='references'); if (refs) params.shift();
		if (params[0]&&params[0].substr(0,7).toLowerCase()=='action:')
		if (params[0]&&params[0].substr(0,6).toLowerCase()=='limit:')
		while (params.length) {
			if (params[0].substr(0,1)=='+') { // read taglist from tiddler
			} else if (params[0].substr(0,1)=='-') { // exclude taglist from tiddler
			} else if (params[0].substr(0,1)=='=') { // get tag list using tagged tags
				var tagged=store.getTaggedTiddlers(params[0].substr(1));
				for (var t=0; t<tagged.length; t++) inc.push(tagged[t].title);
			} else ex.push(params[0]); // exclude params
		// get all items, include/exclude specific items
		var items=[];
		var list=(links||refs)?store.getTiddlers('title','excludeLists'):store.getTags();
		for (var t=0; t<list.length; t++) {
			var title=(links||refs)?list[t].title:list[t][0];
			if (links)	var count=this.getLinks(list[t]).length;
			else if (refs)	var count=store.getReferringTiddlers(title).length;
			else 		var count=list[t][1];
			if ((!inc.length||inc.contains(title))&&(!ex.length||!ex.contains(title)))
				items.push({ title:title, count:count });
		if(!items.length) return;
		// sort by decending count, limit results (optional)
		while (limit && items.length>limit) items.pop();
		// find min/max and group size
		var most=items[0].count;
		var least=items[items.length-1].count;
		var groupSize=(most-least+1)/this.groups;
		// sort by title and draw the cloud of items
		var cloudWrapper = createTiddlyElement(place,'div',null,'tagCloud',null);
		for (var t=0; t<items.length; t++) {
			cloudWrapper.appendChild(document.createTextNode(' '));
			var group=Math.ceil((items[t].count-least)/groupSize)||1;
			var className='tagCloudtag tagCloud'+group;
			var tip=refs?this.refstip:links?this.linkstip:this.tagstip;
			if (action=='goto') { // TAG/LINK/REFERENCES GOTO
				var btn=createTiddlyLink(cloudWrapper,items[t].title,true,className);
			} else if (!links&&!refs) { // TAG POPUP
				var btn=createTiddlyButton(cloudWrapper,items[t].title,tip,onClickTag,className);
				var btn=createTiddlyButton(cloudWrapper,items[t].title,tip,
					function(ev) { var e=ev||window.event; var cmt=config.macros.cloud;
						var popup = Popup.create(this);
						var title = this.getAttribute('tiddler');
						var count = this.getAttribute('count');
						var refs  = this.getAttribute('refs')=='T';
						var links = this.getAttribute('links')=='T';
						var label = (refs?cmt.refslabel:cmt.linkslabel).format([count]);
						if (refs) {
						if (links) {
							var tiddler = store.fetchTiddler(title);
							var links=config.macros.cloud.getLinks(tiddler);
							for(var i=0;i<links.length;i++)
						e.cancelBubble=true; if(e.stopPropagation) e.stopPropagation();
						return false;
					}, className);
Description: Contains the stuff you need to use Tiddlyspot
Note, you also need UploadPlugin, PasswordOptionPlugin and LoadRemoteFileThroughProxy
from http://tiddlywiki.bidix.info for a complete working Tiddlyspot site.

// edit this if you are migrating sites or retrofitting an existing TW
config.tiddlyspotSiteId = 'vinals';

// make it so you can by default see edit controls via http
config.options.chkHttpReadOnly = false;
window.readOnly = false; // make sure of it (for tw 2.2)
window.showBackstage = true; // show backstage too

// disable autosave in d3
if (window.location.protocol != "file:")
	config.options.chkGTDLazyAutoSave = false;

// tweak shadow tiddlers to add upload button, password entry box etc
with (config.shadowTiddlers) {
	SiteUrl = 'http://'+config.tiddlyspotSiteId+'.tiddlyspot.com';
	SideBarOptions = SideBarOptions.replace(/(<<saveChanges>>)/,"$1<<tiddler TspotSidebar>>");
	OptionsPanel = OptionsPanel.replace(/^/,"<<tiddler TspotOptions>>");
	DefaultTiddlers = DefaultTiddlers.replace(/^/,"[[WelcomeToTiddlyspot]] ");
	MainMenu = MainMenu.replace(/^/,"[[WelcomeToTiddlyspot]] ");

// create some shadow tiddler content

 "| tiddlyspot password:|<<option pasUploadPassword>>|",
 "| site management:|<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . .  " + config.tiddlyspotSiteId + ">>//(requires tiddlyspot password)//<br>[[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]], [[download (go offline)|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download]]|",
 "| links:|[[tiddlyspot.com|http://tiddlyspot.com/]], [[FAQs|http://faq.tiddlyspot.com/]], [[blog|http://tiddlyspot.blogspot.com/]], email [[support|mailto:support@tiddlyspot.com]] & [[feedback|mailto:feedback@tiddlyspot.com]], [[donate|http://tiddlyspot.com/?page=donate]]|"

 "tiddlyspot password:",
 "<<option pasUploadPassword>>",

 "<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . .  " + config.tiddlyspotSiteId + ">><html><a href='http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download' class='button'>download</a></html>"

 "This document is a ~TiddlyWiki from tiddlyspot.com.  A ~TiddlyWiki is an electronic notebook that is great for managing todo lists, personal information, and all sorts of things.",
 "@@font-weight:bold;font-size:1.3em;color:#444; //What now?// &nbsp;&nbsp;@@ Before you can save any changes, you need to enter your password in the form below.  Then configure privacy and other site settings at your [[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]] (your control panel username is //" + config.tiddlyspotSiteId + "//).",
 "<<tiddler TspotControls>>",
 "See also GettingStarted.",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Working online// &nbsp;&nbsp;@@ You can edit this ~TiddlyWiki right now, and save your changes using the \"save to web\" button in the column on the right.",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Working offline// &nbsp;&nbsp;@@ A fully functioning copy of this ~TiddlyWiki can be saved onto your hard drive or USB stick.  You can make changes and save them locally without being connected to the Internet.  When you're ready to sync up again, just click \"upload\" and your ~TiddlyWiki will be saved back to tiddlyspot.com.",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Help!// &nbsp;&nbsp;@@ Find out more about ~TiddlyWiki at [[TiddlyWiki.com|http://tiddlywiki.com]].  Also visit [[TiddlyWiki.org|http://tiddlywiki.org]] for documentation on learning and using ~TiddlyWiki. New users are especially welcome on the [[TiddlyWiki mailing list|http://groups.google.com/group/TiddlyWiki]], which is an excellent place to ask questions and get help.  If you have a tiddlyspot related problem email [[tiddlyspot support|mailto:support@tiddlyspot.com]].",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Enjoy :)// &nbsp;&nbsp;@@ We hope you like using your tiddlyspot.com site.  Please email [[feedback@tiddlyspot.com|mailto:feedback@tiddlyspot.com]] with any comments or suggestions."

| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |
| 22/07/2018 05:31:26 | Jorge | [[/|http://vinals.tiddlyspot.com/]] | [[store.cgi|http://vinals.tiddlyspot.com/store.cgi]] | . | [[index.html | http://vinals.tiddlyspot.com/index.html]] | . |
| 22/07/2018 05:32:20 | Jorge | [[/|http://vinals.tiddlyspot.com/]] | [[store.cgi|http://vinals.tiddlyspot.com/store.cgi]] | . | [[index.html | http://vinals.tiddlyspot.com/index.html]] | . |
| 27/07/2018 09:31:51 | Jorge | [[/|http://vinals.tiddlyspot.com/]] | [[store.cgi|http://vinals.tiddlyspot.com/store.cgi]] | . | [[index.html | http://vinals.tiddlyspot.com/index.html]] | . | ok |
| 27/07/2018 09:33:16 | Jorge | [[/|http://vinals.tiddlyspot.com/]] | [[store.cgi|http://vinals.tiddlyspot.com/store.cgi]] | . | [[index.html | http://vinals.tiddlyspot.com/index.html]] | . |
| 28/08/2018 11:33:54 | Jorge | [[/|http://vinals.tiddlyspot.com/]] | [[store.cgi|http://vinals.tiddlyspot.com/store.cgi]] | . | [[index.html | http://vinals.tiddlyspot.com/index.html]] | . |
| 13/11/2018 09:41:17 | Jorge | [[/|http://vinals.tiddlyspot.com/]] | [[store.cgi|http://vinals.tiddlyspot.com/store.cgi]] | . | [[index.html | http://vinals.tiddlyspot.com/index.html]] | . |
| 14/11/2018 15:26:45 | Jorge | [[/|http://vinals.tiddlyspot.com/]] | [[store.cgi|http://vinals.tiddlyspot.com/store.cgi]] | . | [[index.html | http://vinals.tiddlyspot.com/index.html]] | . | ok |
| 14/11/2018 15:28:40 | Jorge | [[/|http://vinals.tiddlyspot.com/]] | [[store.cgi|http://vinals.tiddlyspot.com/store.cgi]] | . | [[index.html | http://vinals.tiddlyspot.com/index.html]] | . | ok |
| 14/11/2018 15:29:38 | Jorge | [[/|http://vinals.tiddlyspot.com/]] | [[store.cgi|http://vinals.tiddlyspot.com/store.cgi]] | . | [[index.html | http://vinals.tiddlyspot.com/index.html]] | . |
| 16/11/2018 13:48:00 | Jorge | [[/|http://vinals.tiddlyspot.com/]] | [[store.cgi|http://vinals.tiddlyspot.com/store.cgi]] | . | [[index.html | http://vinals.tiddlyspot.com/index.html]] | . |
|''Description:''|Save to web a TiddlyWiki|
|''Date:''|Feb 24, 2008|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
version.extensions.UploadPlugin = {
	major: 4, minor: 1, revision: 3,
	date: new Date("Feb 24, 2008"),
	source: 'http://tiddlywiki.bidix.info/#UploadPlugin',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	coreVersion: '2.2.0'

// Environment

if (!window.bidix) window.bidix = {}; // bidix namespace
bidix.debugMode = false;	// true to activate both in Plugin and UploadService
// Upload Macro

config.macros.upload = {
// default values
	defaultBackupDir: '',	//no backup
	defaultStoreScript: "store.php",
	defaultToFilename: "index.html",
	defaultUploadDir: ".",
	authenticateUser: true	// UploadService Authenticate User
config.macros.upload.label = {
	promptOption: "Save and Upload this TiddlyWiki with UploadOptions",
	promptParamMacro: "Save and Upload this TiddlyWiki in %0",
	saveLabel: "save to web", 
	saveToDisk: "save to disk",
	uploadLabel: "upload"	

config.macros.upload.messages = {
	noStoreUrl: "No store URL in parmeters or options",
	usernameOrPasswordMissing: "Username or password missing"

config.macros.upload.handler = function(place,macroName,params) {
	if (readOnly)
	var label;
	if (document.location.toString().substr(0,4) == "http") 
		label = this.label.saveLabel;
		label = this.label.uploadLabel;
	var prompt;
	if (params[0]) {
		prompt = this.label.promptParamMacro.toString().format([this.destFile(params[0], 
			(params[1] ? params[1]:bidix.basename(window.location.toString())), params[3])]);
	} else {
		prompt = this.label.promptOption;
	createTiddlyButton(place, label, prompt, function() {config.macros.upload.action(params);}, null, null, this.accessKey);

config.macros.upload.action = function(params)
		// for missing macro parameter set value from options
		if (!params) params = {};
		var storeUrl = params[0] ? params[0] : config.options.txtUploadStoreUrl;
		var toFilename = params[1] ? params[1] : config.options.txtUploadFilename;
		var backupDir = params[2] ? params[2] : config.options.txtUploadBackupDir;
		var uploadDir = params[3] ? params[3] : config.options.txtUploadDir;
		var username = params[4] ? params[4] : config.options.txtUploadUserName;
		var password = config.options.pasUploadPassword; // for security reason no password as macro parameter	
		// for still missing parameter set default value
		if ((!storeUrl) && (document.location.toString().substr(0,4) == "http")) 
			storeUrl = bidix.dirname(document.location.toString())+'/'+config.macros.upload.defaultStoreScript;
		if (storeUrl.substr(0,4) != "http")
			storeUrl = bidix.dirname(document.location.toString()) +'/'+ storeUrl;
		if (!toFilename)
			toFilename = bidix.basename(window.location.toString());
		if (!toFilename)
			toFilename = config.macros.upload.defaultToFilename;
		if (!uploadDir)
			uploadDir = config.macros.upload.defaultUploadDir;
		if (!backupDir)
			backupDir = config.macros.upload.defaultBackupDir;
		// report error if still missing
		if (!storeUrl) {
			return false;
		if (config.macros.upload.authenticateUser && (!username || !password)) {
			return false;
		bidix.upload.uploadChanges(false,null,storeUrl, toFilename, uploadDir, backupDir, username, password); 
		return false; 

config.macros.upload.destFile = function(storeUrl, toFilename, uploadDir) 
	if (!storeUrl)
		return null;
		var dest = bidix.dirname(storeUrl);
		if (uploadDir && uploadDir != '.')
			dest = dest + '/' + uploadDir;
		dest = dest + '/' + toFilename;
	return dest;

// uploadOptions Macro

config.macros.uploadOptions = {
	handler: function(place,macroName,params) {
		var wizard = new Wizard();
		var markList = wizard.getElement("markList");
		var listWrapper = document.createElement("div");
		var uploadCaption;
		if (document.location.toString().substr(0,4) == "http") 
			uploadCaption = config.macros.upload.label.saveLabel;
			uploadCaption = config.macros.upload.label.uploadLabel;
				{caption: uploadCaption, tooltip: config.macros.upload.label.promptOption, 
					onClick: config.macros.upload.action},
				{caption: this.cancelButton, tooltip: this.cancelButtonPrompt, onClick: this.onCancel}
	options: [
	refreshOptions: function(listWrapper) {
		var opts = [];
		for(i=0; i<this.options.length; i++) {
			var opt = {};
			opt.option = "";
			n = this.options[i];
			opt.name = n;
			opt.lowlight = !config.optionsDesc[n];
			opt.description = opt.lowlight ? this.unknownDescription : config.optionsDesc[n];
		var listview = ListView.create(listWrapper,opts,this.listViewTemplate);
		for(n=0; n<opts.length; n++) {
			var type = opts[n].name.substr(0,3);
			var h = config.macros.option.types[type];
			if (h && h.create) {
	onCancel: function(e)
		return false;
	wizardTitle: "Upload with options",
	step1Title: "These options are saved in cookies in your browser",
	step1Html: "<input type='hidden' name='markList'></input><br>",
	cancelButton: "Cancel",
	cancelButtonPrompt: "Cancel prompt",
	listViewTemplate: {
		columns: [
			{name: 'Description', field: 'description', title: "Description", type: 'WikiText'},
			{name: 'Option', field: 'option', title: "Option", type: 'String'},
			{name: 'Name', field: 'name', title: "Name", type: 'String'}
		rowClasses: [
			{className: 'lowlight', field: 'lowlight'} 

// upload functions

if (!bidix.upload) bidix.upload = {};

if (!bidix.upload.messages) bidix.upload.messages = {
	//from saving
	invalidFileError: "The original file '%0' does not appear to be a valid TiddlyWiki",
	backupSaved: "Backup saved",
	backupFailed: "Failed to upload backup file",
	rssSaved: "RSS feed uploaded",
	rssFailed: "Failed to upload RSS feed file",
	emptySaved: "Empty template uploaded",
	emptyFailed: "Failed to upload empty template file",
	mainSaved: "Main TiddlyWiki file uploaded",
	mainFailed: "Failed to upload main TiddlyWiki file. Your changes have not been saved",
	//specific upload
	loadOriginalHttpPostError: "Can't get original file",
	aboutToSaveOnHttpPost: 'About to upload on %0 ...',
	storePhpNotFound: "The store script '%0' was not found."

bidix.upload.uploadChanges = function(onlyIfDirty,tiddlers,storeUrl,toFilename,uploadDir,backupDir,username,password)
	var callback = function(status,uploadParams,original,url,xhr) {
		if (!status) {
		if (bidix.debugMode) 
		// Locate the storeArea div's 
		var posDiv = locateStoreArea(original);
		if((posDiv[0] == -1) || (posDiv[1] == -1)) {
	if(onlyIfDirty && !store.isDirty())
	// save on localdisk ?
	if (document.location.toString().substr(0,4) == "file") {
		var path = document.location.toString();
		var localPath = getLocalPath(path);
	// get original
	var uploadParams = new Array(storeUrl,toFilename,uploadDir,backupDir,username,password);
	var originalPath = document.location.toString();
	// If url is a directory : add index.html
	if (originalPath.charAt(originalPath.length-1) == "/")
		originalPath = originalPath + "index.html";
	var dest = config.macros.upload.destFile(storeUrl,toFilename,uploadDir);
	var log = new bidix.UploadLog();
	log.startUpload(storeUrl, dest, uploadDir,  backupDir);
	if (bidix.debugMode) 
		alert("about to execute Http - GET on "+originalPath);
	var r = doHttp("GET",originalPath,null,null,username,password,callback,uploadParams,null);
	if (typeof r == "string")
	return r;

bidix.upload.uploadRss = function(uploadParams,original,posDiv) 
	var callback = function(status,params,responseText,url,xhr) {
		if(status) {
			var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
		} else {
	// do uploadRss
	if(config.options.chkGenerateAnRssFeed) {
		var rssPath = uploadParams[1].substr(0,uploadParams[1].lastIndexOf(".")) + ".xml";
		var rssUploadParams = new Array(uploadParams[0],rssPath,uploadParams[2],'',uploadParams[4],uploadParams[5]);
		var rssString = generateRss();
		// no UnicodeToUTF8 conversion needed when location is "file" !!!
		if (document.location.toString().substr(0,4) != "file")
			rssString = convertUnicodeToUTF8(rssString);	
	} else {

bidix.upload.uploadMain = function(uploadParams,original,posDiv) 
	var callback = function(status,params,responseText,url,xhr) {
		var log = new bidix.UploadLog();
		if(status) {
			// if backupDir specified
			if ((params[3]) && (responseText.indexOf("backupfile:") > -1))  {
				var backupfile = responseText.substring(responseText.indexOf("backupfile:")+11,responseText.indexOf("\n", responseText.indexOf("backupfile:")));
			var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
		} else {
	// do uploadMain
	var revised = bidix.upload.updateOriginal(original,posDiv);

bidix.upload.httpUpload = function(uploadParams,data,callback,params)
	var localCallback = function(status,params,responseText,url,xhr) {
		url = (url.indexOf("nocache=") < 0 ? url : url.substring(0,url.indexOf("nocache=")-1));
		if (xhr.status == 404)
		if ((bidix.debugMode) || (responseText.indexOf("Debug mode") >= 0 )) {
			if (responseText.indexOf("Debug mode") >= 0 )
				responseText = responseText.substring(responseText.indexOf("\n\n")+2);
		} else if (responseText.charAt(0) != '0') 
		if (responseText.charAt(0) != '0')
			status = null;
	// do httpUpload
	var boundary = "---------------------------"+"AaB03x";	
	var uploadFormName = "UploadPlugin";
	// compose headers data
	var sheader = "";
	sheader += "--" + boundary + "\r\nContent-disposition: form-data; name=\"";
	sheader += uploadFormName +"\"\r\n\r\n";
	sheader += "backupDir="+uploadParams[3] +
				";user=" + uploadParams[4] +
				";password=" + uploadParams[5] +
				";uploaddir=" + uploadParams[2];
	if (bidix.debugMode)
		sheader += ";debug=1";
	sheader += ";;\r\n"; 
	sheader += "\r\n" + "--" + boundary + "\r\n";
	sheader += "Content-disposition: form-data; name=\"userfile\"; filename=\""+uploadParams[1]+"\"\r\n";
	sheader += "Content-Type: text/html;charset=UTF-8" + "\r\n";
	sheader += "Content-Length: " + data.length + "\r\n\r\n";
	// compose trailer data
	var strailer = new String();
	strailer = "\r\n--" + boundary + "--\r\n";
	data = sheader + data + strailer;
	if (bidix.debugMode) alert("about to execute Http - POST on "+uploadParams[0]+"\n with \n"+data.substr(0,500)+ " ... ");
	var r = doHttp("POST",uploadParams[0],data,"multipart/form-data; ;charset=UTF-8; boundary="+boundary,uploadParams[4],uploadParams[5],localCallback,params,null);
	if (typeof r == "string")
	return r;

// same as Saving's updateOriginal but without convertUnicodeToUTF8 calls
bidix.upload.updateOriginal = function(original, posDiv)
	if (!posDiv)
		posDiv = locateStoreArea(original);
	if((posDiv[0] == -1) || (posDiv[1] == -1)) {
	var revised = original.substr(0,posDiv[0] + startSaveArea.length) + "\n" +
				store.allTiddlersAsHtml() + "\n" +
	var newSiteTitle = getPageTitle().htmlEncode();
	revised = revised.replaceChunk("<title"+">","</title"+">"," " + newSiteTitle + " ");
	revised = updateMarkupBlock(revised,"PRE-HEAD","MarkupPreHead");
	revised = updateMarkupBlock(revised,"POST-HEAD","MarkupPostHead");
	revised = updateMarkupBlock(revised,"PRE-BODY","MarkupPreBody");
	revised = updateMarkupBlock(revised,"POST-SCRIPT","MarkupPostBody");
	return revised;

// UploadLog
// config.options.chkUploadLog :
//		false : no logging
//		true : logging
// config.options.txtUploadLogMaxLine :
//		-1 : no limit
//      0 :  no Log lines but UploadLog is still in place
//		n :  the last n lines are only kept
//		NaN : no limit (-1)

bidix.UploadLog = function() {
	if (!config.options.chkUploadLog) 
		return; // this.tiddler = null
	this.tiddler = store.getTiddler("UploadLog");
	if (!this.tiddler) {
		this.tiddler = new Tiddler();
		this.tiddler.title = "UploadLog";
		this.tiddler.text = "| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |";
		this.tiddler.created = new Date();
		this.tiddler.modifier = config.options.txtUserName;
		this.tiddler.modified = new Date();
	return this;

bidix.UploadLog.prototype.addText = function(text) {
	if (!this.tiddler)
	// retrieve maxLine when we need it
	var maxLine = parseInt(config.options.txtUploadLogMaxLine,10);
	if (isNaN(maxLine))
		maxLine = -1;
	// add text
	if (maxLine != 0) 
		this.tiddler.text = this.tiddler.text + text;
	// Trunck to maxLine
	if (maxLine >= 0) {
		var textArray = this.tiddler.text.split('\n');
		if (textArray.length > maxLine + 1)
			this.tiddler.text = textArray.join('\n');		
	// update tiddler fields
	this.tiddler.modifier = config.options.txtUserName;
	this.tiddler.modified = new Date();
	// refresh and notifiy for immediate update
	store.notify(this.tiddler.title, true);

bidix.UploadLog.prototype.startUpload = function(storeUrl, toFilename, uploadDir,  backupDir) {
	if (!this.tiddler)
	var now = new Date();
	var text = "\n| ";
	var filename = bidix.basename(document.location.toString());
	if (!filename) filename = '/';
	text += now.formatString("0DD/0MM/YYYY 0hh:0mm:0ss") +" | ";
	text += config.options.txtUserName + " | ";
	text += "[["+filename+"|"+location + "]] |";
	text += " [[" + bidix.basename(storeUrl) + "|" + storeUrl + "]] | ";
	text += uploadDir + " | ";
	text += "[[" + bidix.basename(toFilename) + " | " +toFilename + "]] | ";
	text += backupDir + " |";

bidix.UploadLog.prototype.endUpload = function(status) {
	if (!this.tiddler)
	this.addText(" "+status+" |");

// Utilities

bidix.checkPlugin = function(plugin, major, minor, revision) {
	var ext = version.extensions[plugin];
	if (!
		(ext  && 
			((ext.major > major) || 
			((ext.major == major) && (ext.minor > minor))  ||
			((ext.major == major) && (ext.minor == minor) && (ext.revision >= revision))))) {
			// write error in PluginManager
			if (pluginInfo)
				pluginInfo.log.push("Requires " + plugin + " " + major + "." + minor + "." + revision);
			eval(plugin); // generate an error : "Error: ReferenceError: xxxx is not defined"

bidix.dirname = function(filePath) {
	if (!filePath) 
	var lastpos;
	if ((lastpos = filePath.lastIndexOf("/")) != -1) {
		return filePath.substring(0, lastpos);
	} else {
		return filePath.substring(0, filePath.lastIndexOf("\\"));

bidix.basename = function(filePath) {
	if (!filePath) 
	var lastpos;
	if ((lastpos = filePath.lastIndexOf("#")) != -1) 
		filePath = filePath.substring(0, lastpos);
	if ((lastpos = filePath.lastIndexOf("/")) != -1) {
		return filePath.substring(lastpos + 1);
	} else
		return filePath.substring(filePath.lastIndexOf("\\")+1);

bidix.initOption = function(name,value) {
	if (!config.options[name])
		config.options[name] = value;

// Initializations

// require PasswordOptionPlugin 1.0.1 or better
bidix.checkPlugin("PasswordOptionPlugin", 1, 0, 1);

// styleSheet
setStylesheet('.txtUploadStoreUrl, .txtUploadBackupDir, .txtUploadDir {width: 22em;}',"uploadPluginStyles");

	txtUploadStoreUrl: "Url of the UploadService script (default: store.php)",
	txtUploadFilename: "Filename of the uploaded file (default: in index.html)",
	txtUploadDir: "Relative Directory where to store the file (default: . (downloadService directory))",
	txtUploadBackupDir: "Relative Directory where to backup the file. If empty no backup. (default: ''(empty))",
	txtUploadUserName: "Upload Username",
	pasUploadPassword: "Upload Password",
	chkUploadLog: "do Logging in UploadLog (default: true)",
	txtUploadLogMaxLine: "Maximum of lines in UploadLog (default: 10)"

// Options Initializations

// Backstage
	uploadOptions: {text: "upload", tooltip: "Change UploadOptions and Upload", content: '<<uploadOptions>>'}


This document is a ~TiddlyWiki from tiddlyspot.com.  A ~TiddlyWiki is an electronic notebook that is great for managing todo lists, personal information, and all sorts of things.

a = \sqrt{b}

@@font-weight:bold;font-size:1.3em;color:#444; //What now?// &nbsp;&nbsp;@@ Before you can save any changes, you need to enter your password in the form below.  Then configure privacy and other site settings at your [[control panel|http://vinals.tiddlyspot.com/controlpanel]] (your control panel username is //vinals//).
<<tiddler TspotControls>>
See also GettingStarted.

@@font-weight:bold;font-size:1.3em;color:#444; //Working online// &nbsp;&nbsp;@@ You can edit this ~TiddlyWiki right now, and save your changes using the "save to web" button in the column on the right.

@@font-weight:bold;font-size:1.3em;color:#444; //Working offline// &nbsp;&nbsp;@@ A fully functioning copy of this ~TiddlyWiki can be saved onto your hard drive or USB stick.  You can make changes and save them locally without being connected to the Internet.  When you're ready to sync up again, just click "upload" and your ~TiddlyWiki will be saved back to tiddlyspot.com.

@@font-weight:bold;font-size:1.3em;color:#444; //Help!// &nbsp;&nbsp;@@ Find out more about ~TiddlyWiki at [[TiddlyWiki.com|http://tiddlywiki.com]].  Also visit [[TiddlyWiki.org|http://tiddlywiki.org]] for documentation on learning and using ~TiddlyWiki. New users are especially welcome on the [[TiddlyWiki mailing list|http://groups.google.com/group/TiddlyWiki]], which is an excellent place to ask questions and get help.  If you have a tiddlyspot related problem email [[tiddlyspot support|mailto:support@tiddlyspot.com]].

@@font-weight:bold;font-size:1.3em;color:#444; //Enjoy :)// &nbsp;&nbsp;@@ We hope you like using your tiddlyspot.com site.  Please email [[feedback@tiddlyspot.com|mailto:feedback@tiddlyspot.com]] with any comments or suggestions.
© Jorge Viñals, 2009-2013