[cig-commits] r5463 - in long/3D/Gale/trunk: . documentation

walter at geodynamics.org walter at geodynamics.org
Tue Dec 5 12:52:06 PST 2006


Author: walter
Date: 2006-12-05 12:52:05 -0800 (Tue, 05 Dec 2006)
New Revision: 5463

Modified:
   long/3D/Gale/trunk/
   long/3D/Gale/trunk/documentation/gale.lyx
Log:
 r1135 at earth:  boo | 2006-12-05 12:51:30 -0800
 First incomplete cut at specifying the input file.  It completely covers Standard Condition Functions, Basic Components, EulerDeform, Variables, and Velocity Boundary Conditions.  It still needs to cover Shapes, Materials, Flux and Stress BC's, and Parallel options



Property changes on: long/3D/Gale/trunk
___________________________________________________________________
Name: svk:merge
   - 3a629746-de10-0410-b17b-fd6ecaaa963e:/cig:1133
   + 3a629746-de10-0410-b17b-fd6ecaaa963e:/cig:1135

Modified: long/3D/Gale/trunk/documentation/gale.lyx
===================================================================
--- long/3D/Gale/trunk/documentation/gale.lyx	2006-12-05 20:46:57 UTC (rev 5462)
+++ long/3D/Gale/trunk/documentation/gale.lyx	2006-12-05 20:52:05 UTC (rev 5463)
@@ -1478,6 +1478,2692 @@
 Input File Format
 \end_layout
 
+\begin_layout Section
+Structure
+\end_layout
+
+\begin_layout Standard
+The input files are XML files.
+ This leverages a well known format to specify concepts like hierarchies,
+ lists, parameters, and arbitrary structures.
+ The entire document is placed withing a 
+\family typewriter
+StGermainData
+\family default
+ structure.
+\end_layout
+
+\begin_layout LyX-Code
+<?xml version="1.0"?>
+\end_layout
+
+\begin_layout LyX-Code
+<StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
+\end_layout
+
+\begin_layout LyX-Code
+...
+\end_layout
+
+\begin_layout LyX-Code
+</StGermainData>
+\end_layout
+
+\begin_layout Standard
+Within that structure, there are five main parts of every Gale input file:
+ the components, the plugins, EulerDeform, Velocity Conditions, and the
+ variables.
+\end_layout
+
+\begin_layout Subsection
+Components
+\begin_inset LatexCommand \label{sub:Components}
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+The components section is separated off from the rest of the file with an
+ enclosing 
+\family typewriter
+components
+\family default
+ structure.
+ This 
+\family typewriter
+components
+\family default
+ structure is where most of the bulk of the file will be.
+ It specifies things like what the mesh will be like, which material goes
+ where, what the material properties are, what kind of solver to use, etc.
+ Most of the ideas you need to specify will go into the components.
+ When adding a new component, it is important to remember to put the new
+ component inside the components structure.
+ Otherwise Gale will (silently) not use that component.
+ For example, an input file such as
+\end_layout
+
+\begin_layout LyX-Code
+<struct name="components">
+\end_layout
+
+\begin_layout LyX-Code
+  <struct name="conditionFunctions">
+\end_layout
+
+\begin_layout LyX-Code
+    <param name="Type">StgFEM_StandardConditionFunctions</param>
+\end_layout
+
+\begin_layout LyX-Code
+  </struct>
+\end_layout
+
+\begin_layout LyX-Code
+</struct>
+\end_layout
+
+\begin_layout Standard
+will correctly intialize 
+\family typewriter
+StgFEM_StandardConditionFunctions
+\family default
+, but the input file
+\end_layout
+
+\begin_layout LyX-Code
+<struct name="components">
+\end_layout
+
+\begin_layout LyX-Code
+</struct>
+\end_layout
+
+\begin_layout LyX-Code
+<struct name="conditionFunctions">
+\end_layout
+
+\begin_layout LyX-Code
+  <param name="Type">StgFEM_StandardConditionFunctions</param>
+\end_layout
+
+\begin_layout LyX-Code
+</struct>
+\end_layout
+
+\begin_layout Standard
+will not.
+\end_layout
+
+\begin_layout Subsection
+Plugins
+\begin_inset LatexCommand \label{sub:Plugins}
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Gale also has the ability to load modules during runtime.
+ To use these plugins, simply list them in a section outside of the 
+\family typewriter
+components
+\family default
+ structure.
+ For example, the following lines will enable the 
+\family typewriter
+DumpSwarm
+\family default
+ and 
+\family typewriter
+EulerDeform
+\family default
+ plugins
+\end_layout
+
+\begin_layout LyX-Code
+<list name="plugins">
+\end_layout
+
+\begin_layout LyX-Code
+  <param>Underworld_EulerDeform</param>
+\end_layout
+
+\begin_layout LyX-Code
+  <param>Underworld_DumpSwarm</param>
+\end_layout
+
+\begin_layout LyX-Code
+</list> 
+\end_layout
+
+\begin_layout Standard
+Dynamically loading modules is, in general, difficult to get working on
+ multiple platforms.
+ To make things easier, Gale is bundled with a number of plugins compiled
+ into the code and ready to use:
+\end_layout
+
+\begin_layout LyX-Code
+StgFEM_FrequentOutput
+\end_layout
+
+\begin_layout LyX-Code
+StgFEM_CPUTime
+\end_layout
+
+\begin_layout LyX-Code
+Underworld_MovingMesh
+\end_layout
+
+\begin_layout LyX-Code
+Underworld_Vrms
+\end_layout
+
+\begin_layout LyX-Code
+Underworld_EulerDeform
+\end_layout
+
+\begin_layout LyX-Code
+StgFEM_PrintFeVariableDiscreteValues
+\end_layout
+
+\begin_layout LyX-Code
+Underworld_DumpSwarm
+\end_layout
+
+\begin_layout Standard
+You can add additional plugins by modifying the list of static plugins in
+ 
+\family typewriter
+src/Gale/src/main.c
+\family default
+ and making sure that the plugin is compiled into the Gale executable.
+\end_layout
+
+\begin_layout Standard
+If you want to use dynamically loaded plugins, make sure that you compiled
+ with shared libraries (use the 
+\family typewriter
+--with-shared
+\family default
+ option when compiling) and set your LD_LIBRARY_PATH environment variable
+ appropriately.
+\end_layout
+
+\begin_layout Subsection
+EulerDeform
+\end_layout
+
+\begin_layout Standard
+This section covers the input parameters of the 
+\family typewriter
+Underworld_EulerDeform
+\family default
+ component.
+ This is the component that allows the upper surface to move freely or stay
+ rigidly in place.
+ An example 
+\family typewriter
+EulerDeform
+\family default
+ struct is
+\end_layout
+
+\begin_layout LyX-Code
+<struct name="EulerDeform">
+\end_layout
+
+\begin_layout LyX-Code
+  <list name="systems">
+\end_layout
+
+\begin_layout LyX-Code
+    <struct>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="mesh">mesh-constant</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="remesher">pressureRemesher</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="velocityField">VelocityField</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <list name="fields">
+\end_layout
+
+\begin_layout LyX-Code
+        <struct> 
+\end_layout
+
+\begin_layout LyX-Code
+          <param name="field">PressureField</param>
+\end_layout
+
+\begin_layout LyX-Code
+          <param name="variable">pressure</param>
+\end_layout
+
+\begin_layout LyX-Code
+        </struct>
+\end_layout
+
+\begin_layout LyX-Code
+      </list>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="mesh">mesh-linear</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="remesher">velocityRemesher</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="velocityField">VelocityField</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="wrapTop">True</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <list name="fields">
+\end_layout
+
+\begin_layout LyX-Code
+        <struct>
+\end_layout
+
+\begin_layout LyX-Code
+          <param name="field">VelocityField</param>
+\end_layout
+
+\begin_layout LyX-Code
+          <param name="variable">velocity</param>
+\end_layout
+
+\begin_layout LyX-Code
+        </struct>
+\end_layout
+
+\begin_layout LyX-Code
+      </list>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+  </list>
+\end_layout
+
+\begin_layout LyX-Code
+</struct>
+\end_layout
+
+\begin_layout Standard
+This tells Gale to remesh both the pressure and velocity field.
+ 
+\family typewriter
+pressureRemesher
+\family default
+, 
+\family typewriter
+velocityRemesher
+\family default
+, 
+\family typewriter
+pressureField
+\family default
+, 
+\family typewriter
+velocityField
+\family default
+, 
+\family typewriter
+pressure
+\family default
+, and 
+\family typewriter
+velocity
+\family default
+ are all components that must be defined earlier (see section 
+\begin_inset LatexCommand \ref{sub:Components}
+
+\end_inset
+
+).
+ 
+\end_layout
+
+\begin_layout Standard
+Note the critical line
+\end_layout
+
+\begin_layout LyX-Code
+<param name="wrapTop">True</param>
+\end_layout
+
+\begin_layout Standard
+that tells Gale to make the top surface conform to the simulation.
+ Other options (
+\family typewriter
+wrapBottom
+\family default
+, 
+\family typewriter
+wrapLeft
+\family default
+) are available, but untested.
+ 
+\end_layout
+
+\begin_layout Standard
+Additionally, you can tell Gale to fix the positions of the boundaries.
+ For example, if you are running a shortening model, normally Gale will
+ move the boundaries inward as the simulation progresses.
+ If different parts of the boundary are moving at different rates (such
+ as if you were simulating one slab sliding over the other), then the side
+ boundary would quickly become distorted and ruin the simulation.
+ To fix the right boundary, set the variable 
+\family typewriter
+staticRight
+\family default
+ to 
+\family typewriter
+True
+\end_layout
+
+\begin_layout LyX-Code
+<param name="staticRight">True</param>
+\end_layout
+
+\begin_layout Standard
+Similarly, you can independently set the left, top, bottom, front, and back
+ boundaries.
+\end_layout
+
+\begin_layout Standard
+Note that you must have included 
+\family typewriter
+Underworld_EulerDeform
+\family default
+ in the list of plugins (see section 
+\begin_inset LatexCommand \ref{sub:Plugins}
+
+\end_inset
+
+) in order for this section to have any effect.
+\end_layout
+
+\begin_layout Subsection
+Velocity Boundary Conditions
+\end_layout
+
+\begin_layout Standard
+This section specifies what the boundary conditions on the velocity will
+ be.
+ See section 
+\begin_inset LatexCommand \ref{sub:Velocity-Boundary-Conditions}
+
+\end_inset
+
+ for more details.
+\end_layout
+
+\begin_layout Subsection
+Variables
+\begin_inset LatexCommand \label{sub:Variables}
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+The last section is where you would place most of your numeric constants.
+ For example, how many time steps, how often to print output, etc.
+ You may also declare variables for convenience (e.g.
+ the number of grid points) and use it elsewhere, such as in the components.
+\end_layout
+
+\begin_layout Standard
+The following are some of the more important variables:
+\end_layout
+
+\begin_layout Description
+dim The number of dimensions of the simulation.
+ This can be either 2 or 3.
+\end_layout
+
+\begin_layout Description
+maxTimeSteps The number of timesteps to take.
+\end_layout
+
+\begin_layout Description
+outputEvery How often to print output to the screen.
+\end_layout
+
+\begin_layout Description
+dumpEvery How often to dump some information to files.
+\end_layout
+
+\begin_layout Description
+checkpointEvery How often to dump the complete state of the simulation to
+ disk.
+ This allows you to restart the simulation from the checkpoint.
+\end_layout
+
+\begin_layout Description
+outputPath What directory to put the output files in.
+\end_layout
+
+\begin_layout Description
+seed A random number seed.
+ Random numbers are only used in a few, optional places, such as when laying
+ down an initial set of particles.
+\end_layout
+
+\begin_layout Standard
+Also, if you use the basic components given in section 
+\begin_inset LatexCommand \ref{sec:Basic-Components}
+
+\end_inset
+
+, then you will need to specify 
+\family typewriter
+elementResI
+\family default
+, 
+\family typewriter
+elementResJ
+\family default
+, and 
+\family typewriter
+elementResK
+\family default
+.
+ 
+\end_layout
+
+\begin_layout Section
+Basic Components
+\begin_inset LatexCommand \label{sec:Basic-Components}
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Gale is built on top of StGermain, which is a very general framework for
+ scientific computation.
+ Because StGermain is so general, you have to tell it fairly basic things
+ that would be implicit in most codes.
+ For example, you must tell StGermain that you want to set up a regular
+ mesh and solve a finite element problem on it.
+ This means that you have to include a number of components in every input
+ file.
+ These components are
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="geometry">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">MeshGeometry</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="mesh">mesh-linear</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="decomp">decomp-linear</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="sizeI">elementResI</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="sizeJ">elementResJ</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="sizeK">elementResK</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="sizeShift">+1</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="elementTopology">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">IJK26Topology</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="sizeI">elementResI</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="sizeJ">elementResJ</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="sizeK">elementResK</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="elementLayout">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">HexaEL</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Topology">elementTopology</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Geometry">geometry</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="bodyNodeTopology">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">IJK6Topology</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="sizeI">elementResI</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="sizeJ">elementResJ</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="sizeK">elementResK</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="bodyNodeLayout">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">BodyNL</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="ElementLayout">elementLayout</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Topology">bodyNodeTopology</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="decomp-constant">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">HexaMD</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="ElementLayout">elementLayout</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="NodeLayout">bodyNodeLayout</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="numPartitionedDims">numPartitionedDims</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="meshLayout-constant">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">MeshLayout</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="ElementLayout">elementLayout</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="NodeLayout">bodyNodeLayout</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="MeshDecomp">decomp-constant</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="mesh-constant">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">FiniteElement_Mesh</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="MeshLayout">meshLayout-constant</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="ElementSize">8</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="NodeSize">0</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="cornerNodeTopology">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">IJK6Topology</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="sizeI">elementResI</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="sizeJ">elementResJ</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="sizeK">elementResK</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="sizeShift">1</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="cornerNodeLayout">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">CornerNL</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="ElementLayout">elementLayout</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Topology">cornerNodeTopology</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="decomp-linear">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">HexaMD</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="ElementLayout">elementLayout</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="NodeLayout">cornerNodeLayout</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="numPartitionedDims">numPartitionedDims</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="meshLayout-linear">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">MeshLayout</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="ElementLayout">elementLayout</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="NodeLayout">cornerNodeLayout</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="MeshDecomp">decomp-linear</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="mesh-linear">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">FiniteElement_Mesh</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="MeshLayout">meshLayout-linear</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="ElementSize">8</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="NodeSize">0</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="velocity">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">Variable</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Rank">Vector</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Dependency">decomp-linear</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="DataType">Double</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Count">decomp-linear-nodeDomainCount</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="VectorComponentCount">dim</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <list name="names">
+\end_layout
+
+\begin_layout LyX-Code
+        <param>vx</param>
+\end_layout
+
+\begin_layout LyX-Code
+        <param>vy</param>
+\end_layout
+
+\begin_layout LyX-Code
+        <param>vz</param>
+\end_layout
+
+\begin_layout LyX-Code
+      </list>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="velocityBCs">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">CompositeVC</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Data">mesh-linear</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="velocityICs">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">CompositeVC</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Data">mesh-linear</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="velocityDofLayout">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">DofLayout</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Count">decomp-linear-nodeDomainCount</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="BaseVariableCount">dim</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <list name="BaseVariables">
+\end_layout
+
+\begin_layout LyX-Code
+        <param>vx</param>
+\end_layout
+
+\begin_layout LyX-Code
+        <param>vy</param>
+\end_layout
+
+\begin_layout LyX-Code
+        <param>vz</param>
+\end_layout
+
+\begin_layout LyX-Code
+      </list>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="VelocityField">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">FeVariable</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="FEMesh">mesh-linear</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="DofLayout">velocityDofLayout</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="BC">velocityBCs</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="IC">velocityICs</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="LinkedDofInfo">velocityLinkedDofs</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="VelocityMagnitudeField">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">OperatorFeVariable</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Operator">Magnitude</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="FeVariable">VelocityField</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="VelocityGradientsField">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">OperatorFeVariable</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Operator">Gradient</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="FeVariable">VelocityField</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="VelocityXXField">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">OperatorFeVariable</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Operator">TakeFirstComponent</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="FeVariable">VelocityField</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="VelocityYYField">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">OperatorFeVariable</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Operator">TakeSecondComponent</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="FeVariable">VelocityField</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="StrainRateField">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">OperatorFeVariable</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Operator">TensorSymmetricPart</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="FeVariable">VelocityGradientsField</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="VorticityField">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">OperatorFeVariable</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Operator">TensorAntisymmetricPart</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="FeVariable">VelocityGradientsField</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="StrainRateInvariantField">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">OperatorFeVariable</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Operator">SymmetricTensor_Invariant</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="FeVariable">StrainRateField</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="StrainRateXXField">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">OperatorFeVariable</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Operator">TakeFirstComponent</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="FeVariable">StrainRateField</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="StrainRateYYField">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">OperatorFeVariable</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Operator">TakeSecondComponent</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="FeVariable">StrainRateField</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="pressure">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">Variable</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Rank">Scalar</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Dependency">decomp-constant</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="DataType">Double</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Count">decomp-constant-nodeDomainCount</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="pressureDofLayout">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">DofLayout</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Count">decomp-constant-nodeDomainCount</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <list name="BaseVariables">
+\end_layout
+
+\begin_layout LyX-Code
+        <param>pressure</param>
+\end_layout
+
+\begin_layout LyX-Code
+      </list>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="PressureField">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">FeVariable</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="FEMesh">mesh-constant</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="GeometryMesh">mesh-linear</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="DofLayout">pressureDofLayout</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="LinkedDofInfo">pressureLinkedDofs</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="cellLayout">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">SingleCellLayout</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="particleLayout">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">GaussParticleLayout</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="gaussSwarm">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">IntegrationPointsSwarm</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="CellLayout">cellLayout</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="ParticleLayout">particleLayout</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="FiniteElement_Mesh">mesh-linear</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="TimeIntegrator">timeIntegrator</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="IntegrationPointMapper">gaussMapper</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="gaussMapper">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">GaussMapper</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="IntegrationPointsSwarm">gaussSwarm</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="MaterialPointsSwarm">gaussMaterialSwarm</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="backgroundLayout">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">BackgroundParticleLayout</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="gaussMaterialSwarm">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">MaterialPointsSwarm</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="CellLayout">cellLayout</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="ParticleLayout">backgroundLayout</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="FiniteElement_Mesh">mesh-linear</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="timeIntegrator">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">TimeIntegrator</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="order">1</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="simultaneous">t</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Context">context</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="elementCellLayout">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">ElementCellLayout</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Mesh">mesh-linear</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="discreteVoronoi">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">CellularAutomataVoronoi</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="resolution">10</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="diagonalNeighbours">true</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="weights">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">DiscreteVoronoiWeights</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="DiscreteVoronoi">discreteVoronoi</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="localLayout">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">MappedParticleLayout</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="picIntegrationPoints">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">IntegrationPointsSwarm</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="CellLayout">elementCellLayout</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="ParticleLayout">localLayout</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="FiniteElement_Mesh">mesh-linear</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="WeightsCalculator">weights</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="TimeIntegrator">timeIntegrator</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="IntegrationPointMapper">mapper</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="mapper">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">CoincidentMapper</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="IntegrationPointsSwarm">picIntegrationPoints</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="MaterialPointsSwarm">materialSwarm</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="materialSwarmParticleLayout">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">MeshParticleLayout</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="mesh">mesh-linear</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="cellParticleCount">particlesPerCell</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="materialSwarm">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">MaterialPointsSwarm</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="CellLayout">elementCellLayout</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="ParticleLayout">materialSwarmParticleLayout</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="FiniteElement_Mesh">mesh-linear</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="SplittingRoutine">splittingRoutine</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="RemovalRoutine">removalRoutine</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="EscapedRoutine">escapedRoutine</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="materialSwarmAdvector">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">SwarmAdvector</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Swarm">materialSwarm</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="TimeIntegrator">timeIntegrator</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="VelocityField">VelocityField</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="PeriodicBCsManager">periodicBCsManager</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="allowFallbackToFirstOrder">True</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="removalRoutine">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">DiscreteVoronoiRemove</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="idealParticleCount">particlesPerCell</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="DiscreteVoronoi">discreteVoronoi</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="splittingRoutine">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">ReseedSplitting</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="idealParticleCount">particlesPerCell</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="DiscreteVoronoi">discreteVoronoi</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="solutionVelocity">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">SolutionVector</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="FeVariable">VelocityField</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="solutionPressure">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">SolutionVector</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="FeVariable">PressureField</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="mom_force">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">ForceVector</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="FeVariable">VelocityField</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="ExtraInfo">context</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="cont_force">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">ForceVector</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="FeVariable">PressureField</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="ExtraInfo">context</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="k_matrix">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">StiffnessMatrix</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="RowVariable">VelocityField</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="ColumnVariable">VelocityField</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="RHS">mom_force</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="allowZeroElementContributions">False</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="constitutiveMatrix">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">ConstitutiveMatrixCartesian</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Swarm">picIntegrationPoints</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="StiffnessMatrix">k_matrix</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="g_matrix">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">StiffnessMatrix</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="RowVariable">VelocityField</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="ColumnVariable">PressureField</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="RHS">cont_force</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="allowZeroElementContributions">False</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="gradientStiffnessMatrixTerm">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">GradientStiffnessMatrixTerm</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Swarm">gaussSwarm</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="StiffnessMatrix">g_matrix</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="preconditioner">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">StiffnessMatrix</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="RowVariable">PressureField</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="ColumnVariable">PressureField</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="RHS">cont_force</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="allowZeroElementContributions">True</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="preconditionerTerm">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">UzawaPreconditionerTerm</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Swarm">picIntegrationPoints</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="StiffnessMatrix">preconditioner</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="uzawa">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">Stokes_SLE_UzawaSolver</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Preconditioner">preconditioner</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="tolerance">1.0e-5</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="maxIterations">5000</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="stokesEqn">
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Type">Stokes_SLE</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="SLE_Solver">uzawa</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="Context">context</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="StressTensorMatrix">k_matrix</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="GradientMatrix">g_matrix</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="DivergenceMatrix"></param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="CompressibilityMatrix">c_matrix</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="VelocityVector">solutionVelocity</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="PressureVector">solutionPressure</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="ForceVector">mom_force</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="ContinuityForceVector">cont_force</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="killNonConvergent">false</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="nonLinearMaxIterations">nonLinearMaxIterations</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="nonLinearTolerance">nonLinearTolerance</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="makeConvergenceFile">false</param>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct>
+\end_layout
+
+\begin_layout Standard
+These components will be more or less unchanged between input files.
+ You will need to change some associated variables specifying the resolution:
+ 
+\family typewriter
+elementResI
+\family default
+, 
+\family typewriter
+elementResJ
+\family default
+, 
+\family typewriter
+elementResK
+\family default
+.
+\end_layout
+
+\begin_layout Section
+Shapes
+\end_layout
+
+\begin_layout Section
+Materials
+\end_layout
+
+\begin_layout Section
+Boundary Conditions
+\end_layout
+
+\begin_layout Standard
+Gale's computational domain is logically Eulerian.
+ So in 2D, there are four boundaries: 
+\family typewriter
+right
+\family default
+, 
+\family typewriter
+left
+\family default
+, 
+\family typewriter
+top
+\family default
+, and 
+\family typewriter
+bottom
+\family default
+.
+ 3D adds 
+\family typewriter
+front
+\family default
+ and 
+\family typewriter
+back
+\family default
+.
+ Note that the boundaries in the 
+\begin_inset Formula $z$
+\end_inset
+
+ axis are 
+\family typewriter
+front
+\family default
+ and 
+\family typewriter
+back
+\family default
+, not 
+\family typewriter
+top
+\family default
+ and 
+\family typewriter
+bottom
+\family default
+.
+ In many cases, this makes it simple to switch between 2D and 3D.
+ When doing this, you may ignore the warning that the 
+\begin_inset Formula $z$
+\end_inset
+
+ boundaries are empty in 2D.
+\end_layout
+
+\begin_layout Subsection
+Velocity Boundary Conditions
+\begin_inset LatexCommand \label{sub:Velocity-Boundary-Conditions}
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+To impose boundary conditions on the velocity, add a composite variable
+ condition (CompositeVC) to the input file.
+ Within that CompositeVC, add a list of conditions.
+ Within each condition, you specify which boundary, which wall, and what
+ the velocity's value is.
+ For example, to set the 
+\begin_inset Formula $y$
+\end_inset
+
+ velocity on the bottom to zero, add
+\end_layout
+
+\begin_layout LyX-Code
+<struct name="velocityBCs">
+\end_layout
+
+\begin_layout LyX-Code
+  <param name="type">CompositeVC</param>
+\end_layout
+
+\begin_layout LyX-Code
+  <list name="vcList">
+\end_layout
+
+\begin_layout LyX-Code
+    <struct>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="type">WallVC</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="wall">bottom</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <list name="variables">
+\end_layout
+
+\begin_layout LyX-Code
+        <struct>
+\end_layout
+
+\begin_layout LyX-Code
+          <param name="name">vy</param>
+\end_layout
+
+\begin_layout LyX-Code
+          <param name="type">double</param>
+\end_layout
+
+\begin_layout LyX-Code
+          <param name="value">0</param>
+\end_layout
+
+\begin_layout LyX-Code
+        </struct>
+\end_layout
+
+\begin_layout LyX-Code
+      </list>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct> 
+\end_layout
+
+\begin_layout LyX-Code
+  </list>
+\end_layout
+
+\begin_layout LyX-Code
+</struct>
+\end_layout
+
+\begin_layout Standard
+You can also set the velocity to a function.
+ For example, to also set the 
+\begin_inset Formula $x$
+\end_inset
+
+ velocity to have a Gaussian distribution 
+\begin_inset Formula $\exp\left(-\left(\frac{x-0.5}{0.1}\right)^{2}\right)$
+\end_inset
+
+
+\end_layout
+
+\begin_layout LyX-Code
+<struct name="velocityBCs">
+\end_layout
+
+\begin_layout LyX-Code
+  <param name="type">CompositeVC</param>
+\end_layout
+
+\begin_layout LyX-Code
+  <list name="vcList">
+\end_layout
+
+\begin_layout LyX-Code
+    <struct>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="type">WallVC</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <param name="wall">bottom</param>
+\end_layout
+
+\begin_layout LyX-Code
+      <list name="variables">
+\end_layout
+
+\begin_layout LyX-Code
+        <struct>
+\end_layout
+
+\begin_layout LyX-Code
+          <param name="name">vy</param>
+\end_layout
+
+\begin_layout LyX-Code
+          <param name="type">double</param>
+\end_layout
+
+\begin_layout LyX-Code
+          <param name="value">0</param>
+\end_layout
+
+\begin_layout LyX-Code
+        </struct>
+\end_layout
+
+\begin_layout LyX-Code
+        <struct>
+\end_layout
+
+\begin_layout LyX-Code
+          <param name="name">vx</param>
+\end_layout
+
+\begin_layout LyX-Code
+          <param name="type">func</param>
+\end_layout
+
+\begin_layout LyX-Code
+          <param name="value">Gaussian</param>
+\end_layout
+
+\begin_layout LyX-Code
+        </struct>
+\end_layout
+
+\begin_layout LyX-Code
+      </list>
+\end_layout
+
+\begin_layout LyX-Code
+    </struct> 
+\end_layout
+
+\begin_layout LyX-Code
+  </list>
+\end_layout
+
+\begin_layout LyX-Code
+</struct>
+\end_layout
+
+\begin_layout LyX-Code
+<param name="GaussianHeight">1.0</param>
+\end_layout
+
+\begin_layout LyX-Code
+<param name="GaussianWidth">0.1</param>
+\end_layout
+
+\begin_layout LyX-Code
+<param name="GaussianCenter">0.5</param>
+\end_layout
+
+\begin_layout Standard
+Note that the parameters are separated out into the variables section (see
+ Section 
+\begin_inset LatexCommand \ref{sub:Variables}
+
+\end_inset
+
+).
+ In general, you can use any of the Standard Condition Functions (see Section
+ 
+\begin_inset LatexCommand \ref{sec:Standard-Condition-Functions}
+
+\end_inset
+
+) to specify the velocities.
+\end_layout
+
+\begin_layout Subsection
+Flux Boundary Conditions
+\end_layout
+
+\begin_layout Standard
+Sometimes, a velocity boundary condition varies along the boundary, 
+\end_layout
+
+\begin_layout Subsection
+Stress Boundary Conditions
+\end_layout
+
+\begin_layout Standard
+To use stress boundaries with Standard Condition Functions, you must list
+ Standard Condition Functions before StressBC in the list of components.
+\end_layout
+
+\begin_layout Section
+Standard Condition Functions
+\begin_inset LatexCommand \label{sec:Standard-Condition-Functions}
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Standard Condition Functions are simply functions that you can use to specify
+ initial conditions and boundary conditions.
+ At present, they take in a coordinate (x, y, z) and output a function f(x,y,z).
+ They are all defined in the directory 
+\family typewriter
+src/StgFEM/plugins/StandardConditionFunctions/
+\family default
+.
+ For the following descriptions, the sides of the box are at 
+\begin_inset Formula $x_{min}$
+\end_inset
+
+ and 
+\begin_inset Formula $x_{max}$
+\end_inset
+
+, and 
+\begin_inset Formula $L\equiv x_{max}-x_{min}$
+\end_inset
+
+, and all variables with CamelCase capitalization are from the input file.
+\end_layout
+
+\begin_layout Description
+SolidBodyRotation Returns the coordinates rotated by 
+\family typewriter
+SolidBodyRotationOmega
+\family default
+ around the z axis, centered at the coordinate (
+\family typewriter
+SolidBodyRotationCentreX
+\family default
+, 
+\family typewriter
+SolidBodyRotationY
+\family default
+, ).
+ Specifically,
+\begin_inset Formula \[
+\begin{array}{ccc}
+f(x,y,z)_{x} & = & -SolidBodyRotationOmega(y-SolidBodyRotationCentreY)\\
+f(x,y,z)_{y} & = & SolidBodyRotationOmega(X-SolidBodyRotationCentreX)\end{array}\]
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Description
+PartialRotationX Returns the x component of SolidBodyRotation.
+\end_layout
+
+\begin_layout Description
+PartialRotationY Returns the y component of SolidBodyRotation.
+\end_layout
+
+\begin_layout Description
+SimpleShear 
+\begin_inset Formula $f(x,y,z)=SimpleShearFactor\left(y-SimpleShearCentreY\right)$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Description
+Extension 
+\begin_inset Formula $f(x,y,z)=ExtensionFactor\left(x-ExtensionCentreY\right)$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Description
+PartialLid_TopLayer Returns 0 if the x coordinate is within one grid point
+ of the boundary, 1 otherwise.
+\end_layout
+
+\begin_layout Description
+LinearInterpolationLid 
+\begin_inset Formula $f(x,y,z)=bcLeftHandSideValue+\left(\frac{bcRightHandSideValue-bcLeftHandSideValue}{L}\right)x$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Description
+Lid_RampWithCentralMax 
+\begin_inset Formula $f(x,y,z)=\left\{ \begin{array}{cc}
+2\left(x-x_{min}\right)/L & x<L/2+x_{min}\\
+1-2(x-x_{min}-L/2) & x>L/2+x_{min}\end{array}\right.$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Description
+SinusoidalLid 
+\begin_inset Formula \[
+f(x,y,z)=\sin\left(\frac{\pi\left(x-x_{min}\right)}{L}sinusoidalLidWavenumber\right)\]
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Description
+CornerOnly Return 1 if the coordinate is on the right boundary.
+\end_layout
+
+\begin_layout Description
+TemperatureCosineHill Returns a hill defined by a cosine.
+ Specifically, if we define pre-rotated coordinates
+\begin_inset Formula \[
+\begin{array}{ccc}
+x_{pre-rotate} & = & CosineHillCentreX-SolidBodyRotationCentreX\\
+y_{pre-rotate} & = & CosineHillCentreY-SolidBodyRotationCentreY\\
+z_{pre-rotate} & = & CosineHillCentreZ-SolidBodyRotationCentreZ\end{array},\]
+
+\end_inset
+
+ and then rotate them around the z axis by the angle 
+\begin_inset Formula $\theta=SolidBodyRotationOmega*t$
+\end_inset
+
+
+\begin_inset Formula \[
+\begin{array}{ccc}
+x_{hill} & = & x_{pre-rotate}\cos\theta-y_{pre-rotate}\sin\theta\\
+y_{hill} & = & x_{pre-rotate}\sin\theta+y_{pre-rotate}\cos\theta\\
+z_{hill} & = & z_{pre-rotate}\end{array},\]
+
+\end_inset
+
+ then
+\begin_inset Formula \[
+f(x,y,z)=\left\{ \begin{array}{cc}
+\frac{CosineHillHeight}{4}\cos\left(\frac{2\pi r}{CosineHillDiameter}\right) & r<CosineHillDiameter\\
+0 & r>CosineHillDiameter\end{array}\right.,\]
+
+\end_inset
+
+ where 
+\begin_inset Formula $r$
+\end_inset
+
+ is the distance from the center of the hill
+\begin_inset Formula \[
+r\equiv\sqrt{\left(x-x_{hill}\right)^{2}+\left(y-y_{hill}\right)^{2}+\left(z-z_{hill}\right)^{2}}.\]
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Description
+LinearWithSinusoidalPerturbation If we scale the 
+\begin_inset Formula $y$
+\end_inset
+
+ coordinate
+\begin_inset Formula \[
+y_{scaled}=\left(y-y_{min}\right)/\left(y_{max}-y_{min}\right),\]
+
+\end_inset
+
+ then this returns 
+\begin_inset Formula \[
+\begin{array}{ccc}
+f(x,y,z) & = & SinusoidalTempIC\_TopLayerBC\\
+ &  & +\left(SinusoidalTempIC\_TopLayerBC-SinusoidalTempIC\_TopLayerBC\right)\left(1-y_{scaled}\right)\\
+ &  & +SinusoidalTempIC\_PerturbationAmplitude\\
+ &  & *\left(\cos\left(\pi x*SinusoidalTempIC\_HorizontalWaveNumber\right)\right.\\
+ &  & +\left.sin\left(\pi ySinusoidalTempIC\_VerticalWaveNumber\right)\right)\end{array}.\]
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Description
+Trigonometry 
+\begin_inset Formula \[
+f(x,y,z)=1-\frac{\pi y}{2}\sin\left(\frac{\pi x}{x_{max}-x_{min}}\right).\]
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Description
+VelicTemperatureIC 
+\begin_inset Formula \[
+f(x,y,z)=sigma*\cos\left(\pi wavenumberX\left(\frac{x-x_{min}}{x_{max}-x_{min}}\right)\right)\sin\left(\pi\left(y-y_{min}\right)wavenumberY\right),\]
+
+\end_inset
+
+where the height of the box is constrained to 
+\begin_inset Formula $y_{max}-y_{min}=1$
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Description
+VelicTemperatureIC_SolB 
+\begin_inset Formula \[
+f(x,y,z)=sigma*\cos\left(\pi wavenumberX\left(\frac{x-x_{min}}{x_{max}-x_{min}}\right)\right)\sinh\left(\pi wavenumberY\left(\frac{y-y_{min}}{x-x_{min}}\right)\right),\]
+
+\end_inset
+
+where the height of the box is constrained to 
+\begin_inset Formula $y_{max}-y_{min}=1$
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Description
+AnalyticalTemperatureIC First, we define 
+\begin_inset Formula \[
+\begin{array}{ccc}
+x_{0} & \equiv & x-x_{min}\\
+y_{0} & \equiv & y-y_{min}\\
+L & \equiv & x_{max}-x_{min}\\
+H & \equiv & y_{max}-y_{min}\\
+\lambda & \equiv & L/H\end{array},\]
+
+\end_inset
+
+and then compute some intermediate quantities
+\begin_inset Formula \[
+\begin{array}{ccc}
+u_{0} & = & \frac{\lambda^{7/3}}{\left(1+\lambda^{4}\right)^{2/3}}\left(\frac{Ra}{2\sqrt{pi}}\right)^{2/3}\\
+v_{0} & = & u_{0}/\lambda\\
+Q & = & 2\sqrt{\lambda/\left(\pi u_{0}\right)}\\
+T_{u} & = & \frac{1}{2}erf(\left(\frac{1}{2}\left(1-y_{0}\right)\sqrt{u_{0}/x_{0}}\right)\\
+T_{l} & = & 1-\frac{1}{2}erf\left(\frac{1}{2}y_{0}\sqrt{u_{0}/\left(\lambda-x_{0}\right)}\right)\\
+T_{r} & = & \frac{1}{2}+\frac{1}{2}\left(Q/\sqrt{\pi}\right)\sqrt{v_{0}/\left(y_{0}+1\right)}\exp\left(-x_{0}^{2}v_{0}/\left(4y_{0}+4\right)\right)\\
+T_{s} & = & \frac{1}{2}-\frac{1}{2}\left(Q/\sqrt{\pi}\right)\sqrt{v_{0}/\left(2-y_{0}\right)}\exp\left(-\left(\lambda-x_{0}\right)^{2}v_{0}/\left(8-4y_{0}\right)\right)\\
+g & = & T_{u}+T_{l}+T_{r}+T_{s}-1.5\end{array}.\]
+
+\end_inset
+
+ The result then is 
+\begin_inset Formula \[
+f(x,y,z)=\left\{ \begin{array}{cc}
+0 & g<0\\
+g & 0<g<1\\
+1 & g>1\end{array}\right..\]
+
+\end_inset
+
+Note that this requires the error function 
+\begin_inset Formula $erf$
+\end_inset
+
+ which is not available on all platforms.
+ 
+\end_layout
+
+\begin_layout Description
+SinusoidalExtension 
+\begin_inset Formula \[
+\begin{array}{ccc}
+f(x,y,z) & = & SinusoidalExtensionVelocity+SinusoidalExtensionAmplitude\\
+ &  & *\cos\left(2\pi SinusoidalExtensionFrequency\left(t+dt-SinusoidalExtensionPhaseShift\right)\right)\end{array}\]
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Description
+StepFunction This function returns a ramp function in the axis prescribed
+ by the integer 
+\begin_inset Formula $StepFunctionDim$
+\end_inset
+
+, where 
+\begin_inset Formula $0\Rightarrow x$
+\end_inset
+
+, 
+\begin_inset Formula $1\Rightarrow y$
+\end_inset
+
+, 
+\begin_inset Formula $2\Rightarrow z$
+\end_inset
+
+.
+ Defining some convenient constants 
+\begin_inset Formula \[
+\begin{array}{ccc}
+w & = & coord[dim]\\
+w_{-} & = & StepFunctionLowerOffset\\
+w_{+} & = & StepFunctionUpperOffset\\
+V & = & StepFunctionValue\end{array},\]
+
+\end_inset
+
+then if 
+\begin_inset Formula $StepFunctionLessThan$
+\end_inset
+
+ is 
+\family typewriter
+True
+\family default
+, then 
+\begin_inset Formula \[
+f(x,y,z)=\left\{ \begin{array}{cc}
+0 & w<w_{-}\\
+V\left(\frac{w-w_{-}}{w_{+}-w_{-}}\right) & w_{-}<w<w_{+}\\
+V & w_{+}<w\end{array}\right.,\]
+
+\end_inset
+
+ otherwise it is reversed
+\begin_inset Formula \[
+f(x,y,z)=\left\{ \begin{array}{cc}
+V & w<w_{-}\\
+V\left(\frac{w_{+}-w}{w_{+}-w_{-}}\right) & w_{-}<w<w_{+}\\
+0 & w_{+}<w\end{array}\right.,\]
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Description
+StepFunctionProduct1 Using a similar scheme as StepFunction to specify the
+ dimension with 
+\begin_inset Formula $StepFunctionProduct1Dim$
+\end_inset
+
+, 
+\begin_inset Formula \[
+f(x,y,z)=\left\{ \begin{array}{cc}
+0 & w<StepFunctionProduct1Start\\
+StepFunctionProduct1Value & StepFunctionProduct1Start<w<StepFunctionProduct1End\\
+0 & w>StepFunctionProduct1End\end{array}\right.\]
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Description
+StepFunctionProduct2 
+\end_layout
+
+\begin_layout Description
+StepFunctionProduct3
+\end_layout
+
+\begin_layout Description
+StepFunctionProduct4 These are the same as StepFunctionProduct1 except that
+ they use different variables (e.g 
+\begin_inset Formula $StepFunctionProduct2Dim$
+\end_inset
+
+ instead of 
+\begin_inset Formula $StepFunctionProduct1Dim$
+\end_inset
+
+).
+\end_layout
+
+\begin_layout Description
+Gaussian 
+\begin_inset Formula \[
+f(x,y,z)=\left(GaussianHeight\right)\exp\left[-\left(\frac{GaussianCenter-coord[dim]}{GaussianWidth}\right)^{2}\right]\]
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Section
+Parallel Options
+\end_layout
+
 \begin_layout Chapter
 Output File Format
 \end_layout
@@ -1493,6 +4179,10 @@
 \end_layout
 
 \begin_layout Subsection
+Relaxation of Topography
+\end_layout
+
+\begin_layout Subsection
 Traditional Subduction Model
 \end_layout
 



More information about the cig-commits mailing list