[cig-commits] r12937 - in doc/snac: . figures

sue at geodynamics.org sue at geodynamics.org
Mon Sep 22 10:53:23 PDT 2008


Author: sue
Date: 2008-09-22 10:53:22 -0700 (Mon, 22 Sep 2008)
New Revision: 12937

Added:
   doc/snac/figures/
   doc/snac/figures/2nd-inv-profile-radial-direc-chart.png
   doc/snac/figures/2nd-invariant-profile-chart.png
   doc/snac/figures/2nd-invariant-stress-field.png
   doc/snac/figures/EntryPointHierarchyinStGermain.png
   doc/snac/figures/SNACCallHierarchyArch.png
   doc/snac/figures/SNACSolveDetails.png
   doc/snac/figures/citcoms-coupling.png
   doc/snac/figures/mesh-with-pbc.png
   doc/snac/figures/mesh-with-vbc.png
   doc/snac/figures/remeshing1.png
   doc/snac/figures/remeshing2.png
   doc/snac/figures/results-BM-prob-1-graph.png
   doc/snac/figures/results-color-BM-prob-1-graph.png
   doc/snac/figures/results-color2-BM-prob-1-graph.png
   doc/snac/figures/snac-stress-chart.png
   doc/snac/figures/snac_cover.pdf
   doc/snac/figures/snac_cover.psd
   doc/snac/figures/snac_v.01_20070320.doc
   doc/snac/snac.lyx
Log:
snac manual

Added: doc/snac/figures/2nd-inv-profile-radial-direc-chart.png
===================================================================
(Binary files differ)


Property changes on: doc/snac/figures/2nd-inv-profile-radial-direc-chart.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: doc/snac/figures/2nd-invariant-profile-chart.png
===================================================================
(Binary files differ)


Property changes on: doc/snac/figures/2nd-invariant-profile-chart.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: doc/snac/figures/2nd-invariant-stress-field.png
===================================================================
(Binary files differ)


Property changes on: doc/snac/figures/2nd-invariant-stress-field.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: doc/snac/figures/EntryPointHierarchyinStGermain.png
===================================================================
(Binary files differ)


Property changes on: doc/snac/figures/EntryPointHierarchyinStGermain.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: doc/snac/figures/SNACCallHierarchyArch.png
===================================================================
(Binary files differ)


Property changes on: doc/snac/figures/SNACCallHierarchyArch.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: doc/snac/figures/SNACSolveDetails.png
===================================================================
(Binary files differ)


Property changes on: doc/snac/figures/SNACSolveDetails.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: doc/snac/figures/citcoms-coupling.png
===================================================================
(Binary files differ)


Property changes on: doc/snac/figures/citcoms-coupling.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: doc/snac/figures/mesh-with-pbc.png
===================================================================
(Binary files differ)


Property changes on: doc/snac/figures/mesh-with-pbc.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: doc/snac/figures/mesh-with-vbc.png
===================================================================
(Binary files differ)


Property changes on: doc/snac/figures/mesh-with-vbc.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: doc/snac/figures/remeshing1.png
===================================================================
(Binary files differ)


Property changes on: doc/snac/figures/remeshing1.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: doc/snac/figures/remeshing2.png
===================================================================
(Binary files differ)


Property changes on: doc/snac/figures/remeshing2.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: doc/snac/figures/results-BM-prob-1-graph.png
===================================================================
(Binary files differ)


Property changes on: doc/snac/figures/results-BM-prob-1-graph.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: doc/snac/figures/results-color-BM-prob-1-graph.png
===================================================================
(Binary files differ)


Property changes on: doc/snac/figures/results-color-BM-prob-1-graph.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: doc/snac/figures/results-color2-BM-prob-1-graph.png
===================================================================
(Binary files differ)


Property changes on: doc/snac/figures/results-color2-BM-prob-1-graph.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: doc/snac/figures/snac-stress-chart.png
===================================================================
(Binary files differ)


Property changes on: doc/snac/figures/snac-stress-chart.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: doc/snac/figures/snac_cover.pdf
===================================================================
(Binary files differ)


Property changes on: doc/snac/figures/snac_cover.pdf
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: doc/snac/figures/snac_cover.psd
===================================================================
(Binary files differ)


Property changes on: doc/snac/figures/snac_cover.psd
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: doc/snac/figures/snac_v.01_20070320.doc
===================================================================
(Binary files differ)


Property changes on: doc/snac/figures/snac_v.01_20070320.doc
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: doc/snac/snac.lyx
===================================================================
--- doc/snac/snac.lyx	                        (rev 0)
+++ doc/snac/snac.lyx	2008-09-22 17:53:22 UTC (rev 12937)
@@ -0,0 +1,8115 @@
+#LyX 1.5.1 created this file. For more info see http://www.lyx.org/
+\lyxformat 276
+\begin_document
+\begin_header
+\textclass book
+\begin_preamble
+\usepackage{hyperref}
+
+\let\myUrl\url
+\renewcommand{\url}[1]{(\myUrl{#1})}
+
+\raggedbottom
+\end_preamble
+\language english
+\inputencoding auto
+\font_roman default
+\font_sans default
+\font_typewriter default
+\font_default_family default
+\font_sc false
+\font_osf false
+\font_sf_scale 100
+\font_tt_scale 100
+\graphics default
+\paperfontsize default
+\spacing single
+\papersize default
+\use_geometry true
+\use_amsmath 0
+\use_esint 0
+\cite_engine basic
+\use_bibtopic false
+\paperorientation portrait
+\leftmargin 1in
+\topmargin 1in
+\rightmargin 1in
+\bottommargin 1in
+\secnumdepth 3
+\tocdepth 5
+\paragraph_separation indent
+\defskip medskip
+\quotes_language swedish
+\papercolumns 1
+\papersides 2
+\paperpagestyle headings
+\tracking_changes false
+\output_changes false
+\author "" 
+\author "" 
+\end_header
+
+\begin_body
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float figure
+placement H
+wide false
+sideways false
+status open
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Graphics
+	filename figures/snac_cover.pdf
+	display color
+	width 75page%
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+thispagestyle{empty}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Title
+SNAC User Manual
+\end_layout
+
+\begin_layout Author
+© California Institute of Technology
+\newline
+Version ?.?.?
+\end_layout
+
+\begin_layout Date
+\noindent
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+today
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Paragraph*
+About the cover:
+\end_layout
+
+\begin_layout Standard
+Pictured is the temperature field from a modified Cookbook 1 example (Blankenbac
+k benchmark case 1a -- TODO, need citation label and biblio entry), but
+ with a higher 
+\begin_inset Formula $Ra=10^{6},$
+\end_inset
+
+and longer 4 
+\begin_inset Formula $\times$
+\end_inset
+
+ 1 aspect ratio (256 
+\begin_inset Formula $\times$
+\end_inset
+
+64 elements).
+ 
+\end_layout
+
+\begin_layout Standard
+\begin_inset LatexCommand tableofcontents
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset FloatList figure
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Part
+Preface
+\end_layout
+
+\begin_layout Chapter*
+Preface
+\end_layout
+
+\begin_layout Section*
+About This Document
+\end_layout
+
+\begin_layout Standard
+This document is organized into three parts.
+ Part I consists of traditional book front matter, including this preface.
+ Part II begins with an introduction to Pyre and the Pyre-compatible version
+ of SNAC and their capabilities and proceeds to the details of implementation.
+ Part III provides appendices and references.
+ 
+\end_layout
+
+\begin_layout Standard
+The style of this publication is based on the 
+\begin_inset LatexCommand htmlurl
+name "Apple Publications Style Guide"
+target "developer.apple.com/documentation/UserExperience/Conceptual/APStyleGuide/AppleStyleGuide2003.pdf"
+
+\end_inset
+
+, as recommended by 
+\begin_inset LatexCommand htmlurl
+name "Python.org"
+target "www.python.org"
+
+\end_inset
+
+.
+ The documentation was produced using 
+\begin_inset LatexCommand htmlurl
+name "LyX"
+target "www.lyx.org"
+
+\end_inset
+
+ to facilitate the transformation of files from one format to another.
+ LyX is a document processor that encourages an approach to writing based
+ on the structure of your documents, not their appearance.
+ It is released under a Free Software/Open Source license.
+\end_layout
+
+\begin_layout Standard
+Errors and bug fixes in this manual should be directed to the 
+\begin_inset LatexCommand url
+name "CIG Long-Term Tectonics Mailing List"
+target "cig-long at geodynamics.org"
+
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Section*
+Who Will Use This Document
+\end_layout
+
+\begin_layout Standard
+This documentation is aimed at scientists who prefer to use prepackaged
+ and specialized analysis tools.
+ Users are likely to be experienced computational earth scientists and have
+ familiarity with basic scripting, software installation, and programming;
+ but are not likely to be professional programmers.
+ Of those, there are likely to be two classes of users: those who just run
+ models and those who modify the source code.
+\end_layout
+
+\begin_layout Section*
+Citation
+\end_layout
+
+\begin_layout Standard
+Computational Infrastructure for Geodynamics (CIG) is making this source
+ code available to you in the hope that the software will enhance your research
+ in geophysics.
+ A number of individuals have contributed a significant portion of their
+ careers toward the development of SNAC and Pyre.
+ It is essential that you recognize these individuals in the normal scientific
+ practice by citing the appropriate peer reviewed papers and making appropriate
+ acknowledgements.
+ 
+\end_layout
+
+\begin_layout Standard
+The SNAC development team asks that you cite 
+\end_layout
+
+\begin_layout Itemize
+E.
+ Choi, Thoutireddy, P., Lavier, L., Quenette, S., Tan, E., Gurnis, M., Aivazis
+ M., and Appelbe, B., GeoFramework Part II: Coupling models of crustal deformation
+ and mantle convection with a computational framework, to be submitted to
+ 
+\emph on
+Geochem., Geophys., Geosys.
+ 
+\end_layout
+
+\begin_layout Standard
+The developers also request that in your oral presentations and in your
+ paper acknowledgements that you indicate your use of this code, the authors
+ of the code, and 
+\begin_inset LatexCommand htmlurl
+name "CIG"
+target "geodynamics.org"
+
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Section*
+Support
+\end_layout
+
+\begin_layout Standard
+Pyre development is funded by the 
+\begin_inset LatexCommand htmlurl
+name "U.S. Dept. of Energy's Advanced Simulation and Computing program"
+target "www.sandia.gov/NNSA/ASC"
+
+\end_inset
+
+ and the 
+\begin_inset LatexCommand htmlurl
+name "National Science Foundation's"
+target "www.nsf.gov"
+
+\end_inset
+
+ Information Technology Research (ITR) program (grant #0205653).
+ Continued support of SNAC is based upon work supported by the National
+ Science Foundation under Grant No.
+ EAR-0406751.
+ Any opinions, findings, and conclusions or recommendations expressed in
+ this material are those of the authors and do not necessarily reflect the
+ views of the National Science Foundation.
+\end_layout
+
+\begin_layout Part
+Chapters
+\end_layout
+
+\begin_layout Chapter
+Introduction
+\end_layout
+
+\begin_layout Standard
+SNAC (StGermaiN Analysis of Continua) is an updated Lagrangian explicit
+ finite element code for modeling a finitely deforming viscoplastic solid
+ in 3D, released under the GNU General Public License (see Appendix 
+\begin_inset LatexCommand vref
+reference "cha:License"
+
+\end_inset
+
+).
+ In this code, nodal velocities satisfying a weak-form of the momentum balance
+ are obtained as the nodal solution.
+ A Cartesian mesh consisting of 4-node linear or constant-strain tetrahedral
+ elements is used to represent a discretized domain, although a spherical
+ domain can also be used.
+ On top of the tetrahedral discretization, a coarser discretization is construct
+ed by zones, which are defined by eight nodes like a hexhedral element in
+ the standard FEM and subdivided into two layouts of five tetrahedral elements
+ for symmetric response.
+ To avoid the over-stiff response of tetrahedrons in the incompressible
+ limit, mixed discretization is applied [Marti and Cundall, 1982].
+ The mixed discretization relieves over-stiffness by replacing the first
+ invariant of tetrahedral strain-rate tensor with the one averaged over
+ a zone.
+\end_layout
+
+\begin_layout Section
+SNAC Implementation
+\end_layout
+
+\begin_layout Subsection
+Weak Formulation 
+\end_layout
+
+\begin_layout Standard
+Momentum balance for continuum in current or deformed configuration is as
+ given below
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \begin{equation}
+\begin{array}{c}
+\frac{\partial\sigma_{ij}}{\partial x_{j}}+\rho g_{i}=\frac{Dv_{i}}{Dt}\,\, in\,\,\Omega\\
+v_{i}=g_{i}\,\, on\,\,\Gamma_{g}\\
+t_{i}=h_{i}\,\, on\,\,\Gamma_{h}\end{array}\label{eq:Momentum balance for continuum}\end{equation}
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+where 
+\begin_inset Formula $\partial\Omega$
+\end_inset
+
+, the domain boundary, is the union of disjoint subsets, 
+\begin_inset Formula $\Gamma_{h}$
+\end_inset
+
+ and 
+\begin_inset Formula $\Gamma_{g}$
+\end_inset
+
+, 
+\begin_inset Formula $\sigma_{ij}$
+\end_inset
+
+, 
+\begin_inset Formula $g_{i}$
+\end_inset
+
+, and 
+\begin_inset Formula $v_{i}$
+\end_inset
+
+ are components of the Cauchy stress tensor, the gravitational acceleration,
+ and the velocity components, respectively.
+ 
+\begin_inset Formula $\frac{D}{Dt}$
+\end_inset
+
+ is the material or total derivative, and equal to partial derivative with
+ respect to time in SNAC since the updated Lagrangian viewpoint is taken.
+ The corresponding weak form of the momentum balance is
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \begin{equation}
+\int\delta\nu_{i,j}\sigma_{ij}d\Omega-\int\delta\nu_{i}\rho g_{i}d\Omega+\int\delta\nu_{i}\rho\frac{Dv_{i}}{Dt}d\Omega-\int_{\Gamma_{h}}\delta\nu_{i}\left(t_{i}-h_{i}\right)d\Gamma=0\label{eq:weak form of momentum balance}\end{equation}
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+where 
+\begin_inset Formula $\delta\nu_{i}$
+\end_inset
+
+ are components of virtual velocity and a comma stands for partial differentiati
+on.
+ This weak form is also known as principle of virtual power.
+ Introducing the isoparametric discretization for the velocity in each element
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \begin{equation}
+v_{i}=v_{i}^{a}N_{a}\left(X\right)\label{eq:isoparametric discretization for the velocity}\end{equation}
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+where 
+\begin_inset Formula $v_{i}^{a}$
+\end_inset
+
+ is the 
+\emph on
+i
+\emph default
+-th component velocity of node 
+\begin_inset Formula $a$
+\end_inset
+
+, 
+\begin_inset Formula $N_{a}$
+\end_inset
+
+ is the shape function associated with node 
+\begin_inset Formula $a$
+\end_inset
+
+, and 
+\begin_inset Formula $X$
+\end_inset
+
+ material coordinate.
+ Since the discretization is isoparametric, the same discretization holds
+ for virtual velocities.
+ This discretization then provides a discrete version of the principle of
+ virtual power: 
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \begin{equation}
+\delta\nu_{i}^{a}\left(\int\sigma_{ij}N_{a,j}d\Omega-\int N_{a}\rho g_{i}d\Omega+\int N_{a}\rho\frac{Dv_{i}}{Dt}d\Omega-\int_{\Gamma_{h}}N_{a}\left(t_{i}-h_{i}\right)d\Gamma\right)=0\label{eq:discrete version of virtual power}\end{equation}
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Since the virtual velocities, 
+\begin_inset Formula $\delta\nu_{i}$
+\end_inset
+
+, are arbitrary everywhere except on Dirichlet boundary
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \begin{equation}
+r_{i}^{a}=\int N_{a}\rho g_{i}d\Omega-\int\sigma_{ij}N_{a,j}d\Omega-\int N_{a}\rho\frac{Dv_{i}}{Dt}d\Omega-\int_{\Gamma_{h}}N_{a}\left(t_{i}-h_{i}\right)d\Gamma=0\label{eq:5}\end{equation}
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+where 
+\begin_inset Formula $r_{i}^{a}$
+\end_inset
+
+ is the residual force vector.
+ The above set of equations corresponds to discrete momentum balance and
+ we solve them for the nodal velocities, 
+\begin_inset Formula $v_{i}^{a}$
+\end_inset
+
+.
+ Because SNAC seeks a quasistatic solution, the inertia term in Eq.
+ 
+\begin_inset LatexCommand ref
+reference "eq:5"
+
+\end_inset
+
+ can be dropped.
+ This weak form of momentum balance equation, Eq.
+ 
+\begin_inset LatexCommand ref
+reference "eq:5"
+
+\end_inset
+
+, is equivalent to that acquired from the original Finite Difference formulation
+ of FLAC [Cundall, 1989].
+ In the finite difference formulation, all the partial derivatives are replaced
+ by the integral definitions [Wilkins, 1964], so that the partial derivatives
+ of shape functions are not involved explicitly.
+ 
+\end_layout
+
+\begin_layout Subsection
+Solution Scheme 
+\end_layout
+
+\begin_layout Standard
+In SNAC, the solution to velocity is obtained by an explicit version of
+ dynamic relaxation.
+ Consider the autonomous set of equations
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \begin{equation}
+M\frac{D^{2}\nu}{Dt^{2}}+C\frac{Dv}{Dt}+K\nu=f\label{eq:autonomous set of equations}\end{equation}
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+where 
+\series bold
+\emph on
+M
+\series default
+\emph default
+, 
+\series bold
+\emph on
+C
+\series default
+\emph default
+, and 
+\series bold
+\emph on
+K
+\series default
+\emph default
+ are mass, damping and stiffness matrix respectively and 
+\series bold
+\emph on
+
+\begin_inset Formula $f$
+\end_inset
+
+
+\series default
+\emph default
+ is independent of time.
+ For 
+\series bold
+\emph on
+C
+\series default
+\emph default
+, positive definite, the transient velocity solution converges to that of
+ equilibrium velocity solution 
+\begin_inset Formula $K\nu=f$
+\end_inset
+
+ as 
+\begin_inset Formula $t\rightarrow\infty$
+\end_inset
+
+.
+ Critical damping is desired for the fastest convergence to equilibrium,
+ but the accurate evaluation of critical damping involves the expensive
+ computation of eigenvalues.
+ So, we adopt a local non-viscous damping [Cundall, 1987].
+ In this approach, the magnitude of the damping force on a node is proportional
+ to the magnitude of the unbalanced force, and the direction of damping
+ force is such that energy is always dissipated.
+ The velocity update can then be written as follows:
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \begin{equation}
+\nu_{ia}^{t+\frac{\Delta t}{2}}=\nu_{ia}^{t-\frac{\Delta t}{2}}+\left(r_{ia}-f_{ia}^{d}\right)\frac{\Delta t}{M_{a}}\label{eq:velocity update}\end{equation}
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+where 
+\begin_inset Formula $M_{a}$
+\end_inset
+
+ is the fictitious nodal mass for node 
+\begin_inset Formula $a$
+\end_inset
+
+, and 
+\begin_inset Formula $f_{ia}^{d}$
+\end_inset
+
+ is the 
+\emph on
+i
+\emph default
+-th component damping force on node 
+\begin_inset Formula $a$
+\end_inset
+
+.
+ The damping force, 
+\begin_inset Formula $f_{ia}^{d}$
+\end_inset
+
+, is given by 
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \begin{equation}
+f_{ia}^{d}=\alpha|r_{ia}|\mathrm{sgn}\left(\nu_{ia}^{t-\frac{\Delta t}{2}}\right)\label{eq:damping forcec}\end{equation}
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+where 
+\begin_inset Formula $\alpha$
+\end_inset
+
+ is the proportionality constant for damping and ??? (ends in G3 paper)
+ TODO: what need to happen here?
+\end_layout
+
+\begin_layout Standard
+Due to the explicit nature of the solution scheme, the solution is conditionally
+ stable when the numerical information speed of the mesh is more than the
+ physical information speed.
+ This condition can be expressed as 
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \[
+\Delta t\leq\frac{\Delta x}{C_{p}}\]
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+where 
+\begin_inset Formula $C_{p}=\sqrt{\frac{\kappa+4G/3}{\rho}}$
+\end_inset
+
+ is the P-wave speed and 
+\begin_inset Formula $\Delta x$
+\end_inset
+
+ is the element size.
+ Since the mass matrix is fictitious, we can choose a mass matrix in such
+ a way that convergence is optimal.
+ The optimal convergence is obtained when local values of critical time
+ steps for each element are equal.
+ The condition for this can be obtained as 
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \begin{equation}
+M_{ia}=\sum\frac{\left(\kappa+4G/3\right)\Delta x_{\mathrm{max}}^{2}}{6V}\label{eq:condition for optimal convergence}\end{equation}
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+where summation is over all the tetrahedral elements sharing the node a,
+ and the 
+\begin_inset Formula $\Delta x_{\mathrm{max}}$
+\end_inset
+
+ is the maximum propagation distance.
+\end_layout
+
+\begin_layout Subsection
+Constitutive Update 
+\end_layout
+
+\begin_layout Standard
+SNAC uses a general elasto-visco-plastic (or viscoplastic) rheological model
+ to update Cauchy stress based on strain-rate.
+ This viscoplastic model can deal with various constitutive laws that are
+ typically used for the Earth's crustal and mantle as its limiting cases.
+ For example, elastic, viscoelastic and elastoplastic material are realized
+ in the following cases: 
+\end_layout
+
+\begin_layout Enumerate
+Elastic material corresponds to the limit of infinite viscosity and infinite
+ yield stress.
+ 
+\end_layout
+
+\begin_layout Enumerate
+Viscoelastic material corresponds to the limit of infinite yield strength.
+ 
+\end_layout
+
+\begin_layout Enumerate
+Elasoplastic material corresponds to the infinite viscosity.
+ 
+\end_layout
+
+\begin_layout Standard
+Using the viscoplastic rheology is physically more realistic than using
+ one of the limiting cases listed above since all materials have dissipative
+ mechanisms, however small they might be, and hence have viscosity.
+ This viscosity also provides a length scale for the problem of localization,
+ which in turn enables physically meaningful mesh independent solution when
+ the mesh size is smaller than this length scale [e.g., Needleman, 1988].
+ 
+\end_layout
+
+\begin_layout Standard
+Since the nodal variables are velocities and whose spatial gradients are
+ deformation rates, we formulate constitutive update in terms of strain
+ rate.
+ The objective stress rate of choice is Jaumann or the corotational stress
+ rate (
+\begin_inset Formula $\sigma^{\Delta J}$
+\end_inset
+
+ ), 
+\begin_inset Formula $\sigma^{\Delta J}=C^{\Delta J}D$
+\end_inset
+
+ 
+\end_layout
+
+\begin_layout Standard
+where
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \begin{equation}
+D\,(D_{i,j}=\left(\frac{\partial\nu_{i}}{\partial x_{j}}+\frac{\partial\nu_{j}}{\partial x_{i}}\right)),\,\, W\,(W_{i,j}=\frac{1}{2}\left(\frac{\partial\nu_{i}}{\partial x_{j}}-\frac{\partial\nu_{j}}{\partial x_{i}}\right))\label{eq:deformation and spin tensors}\end{equation}
+
+\end_inset
+
+ are the deformation and spin tensors and 
+\begin_inset Formula $C^{\Delta J}$
+\end_inset
+
+ is Jaumann tangent modulus.
+ For the isotropic material Jaumann tangent modulus is the same as the elastic
+ tangent modulus, in which case correction to the stresses due to rotation
+ can be given as
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \begin{equation}
+\Delta\sigma=\Delta\sigma^{C}+\Delta\sigma^{R}=\Delta\sigma^{C}+\left(W\sigma-\sigma W\right)\Delta t,\label{eq:lots of deltas}\end{equation}
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+where 
+\begin_inset Formula $\Delta\sigma^{C}$
+\end_inset
+
+ denotes the stress update by constitutive law and 
+\begin_inset Formula $\Delta\sigma^{R}$
+\end_inset
+
+ stands for the correction due to finite rotation, of the stress update.
+ 
+\end_layout
+
+\begin_layout Standard
+During the viscoplastic constitutive update, the initial guess of stress
+ increment is first predicted by Maxwell viscoelastic constitutive law.
+ If the guessed stress increment exceeds a given yield criterion, it is
+ projected onto the yield surface using a return mapping method; otherwise,
+ the viscoelastic stress update is kept.
+ The detailed algorithm of stress update at each quadrature point and each
+ time-step is as follows: 
+\end_layout
+
+\begin_layout Enumerate
+
+\series bold
+Viscoelastic predictor:
+\series default
+ Obtain viscoelastic stress increment predictor with Maxwell constitutive
+ update corresponding to the strain increment.
+ Since viscous relaxation affects only the deviatoric part of stress, the
+ deviatoric stress update is given by 
+\end_layout
+
+\begin_deeper
+\begin_layout Standard
+\begin_inset Formula \begin{equation}
+S_{ij}^{n+1}=\left(C_{1}S_{ij}^{n}+2G\Delta\varepsilon_{ij}^{d}\right)C_{2}\label{eq:deviatoric stress update}\end{equation}
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+where 
+\begin_inset Formula $S_{IJ}\left(=\sigma_{ij}-\frac{1}{3}\delta_{ij}\sigma_{kk}\right)$
+\end_inset
+
+ is the deviatoric stress, 
+\begin_inset Formula $\varepsilon_{ij}^{d}$
+\end_inset
+
+ is the deviatoric part of the strain increment 
+\begin_inset Formula $\varepsilon_{ij}\left(\varepsilon_{ij}=\frac{D\varepsilon_{ij}}{Dt}\Delta t\right),\,\, C_{1}=1-\frac{G\Delta t}{2\eta},\,\, C_{2}=\frac{1}{1+\frac{G\Delta t}{2\eta}}$
+\end_inset
+
+ and 
+\begin_inset Formula $G$
+\end_inset
+
+ is the shear modulus.
+ Volumetric elastic stress increment is given by 
+\begin_inset Formula $\Delta\sigma_{kk}=3K\Delta\varepsilon_{kk}$
+\end_inset
+
+ which gives viscoelastic predictor update at 
+\begin_inset Formula $t_{n+1}$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \begin{equation}
+\sigma_{ij}^{n+1}=S_{ij}^{n+1}+\frac{1}{3}\left(\sigma_{kk}^{n}+\Delta\sigma_{kk}\right)\label{eq:viscoelastic predictor update}\end{equation}
+
+\end_inset
+
+
+\end_layout
+
+\end_deeper
+\begin_layout Enumerate
+Plastic correction: If 
+\begin_inset Formula $\sigma^{n+1}$
+\end_inset
+
+ is inside or on the yield surface, i.e., 
+\begin_inset Formula $f\left(\sigma^{n+1}\right)\leq0,$
+\end_inset
+
+ where 
+\begin_inset Formula $f$
+\end_inset
+
+ is the yield function, then it does not need plastic correction.
+ If 
+\begin_inset Formula $\sigma^{n+1}$
+\end_inset
+
+ is outside the yield surface, then yielding occurs and we project 
+\begin_inset Formula $\sigma^{n+1}$
+\end_inset
+
+ onto the yield surface using a return-mapping algorithm [TODO need citation:
+ Ortiz and Simo, 1986].
+ 
+\end_layout
+
+\begin_layout Enumerate
+In general, for frictional materials, the yield function can be written
+ as 
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \begin{equation}
+f\left(\sigma^{n+1}\right)=\tau+q_{\phi}\sigma_{p}-C\label{eq:frictional materials yield}\end{equation}
+
+\end_inset
+
+in which 
+\begin_inset Formula $\tau$
+\end_inset
+
+ represents shear stress and 
+\begin_inset Formula $\sigma_{p}$
+\end_inset
+
+ represents normal stress, 
+\begin_inset Formula $q_{\phi}$
+\end_inset
+
+ is a function of the friction angle 
+\begin_inset Formula $\phi$
+\end_inset
+
+, and 
+\begin_inset Formula $C$
+\end_inset
+
+ is cohesive strength of the material.
+ In the case of Drucker-Prager material 
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \begin{equation}
+\tau=\sqrt{\frac{1}{2}S_{ij}S_{ij}},\label{eq:Drucker-Prager material}\end{equation}
+
+\end_inset
+
+the second invariant of the deviatoric stress tensor (
+\begin_inset Formula $S$
+\end_inset
+
+), while 
+\begin_inset Formula $\sigma_{p}=\frac{1}{3}\sigma_{kk}$
+\end_inset
+
+, the first invariant of stress tensor (
+\begin_inset Formula $\sigma$
+\end_inset
+
+).
+ Similarly in the case of Mohr-Coulomb material, 
+\begin_inset Formula $\tau=\frac{1}{2}\left(\sigma_{3}-\sigma_{1}\right)$
+\end_inset
+
+ and 
+\begin_inset Formula $\sigma_{p}=\frac{1}{2}\left(\sigma_{3}+\sigma_{1}\right)$
+\end_inset
+
+, where 
+\begin_inset Formula $\sigma_{1}\leq\sigma_{2}\leq\sigma_{3}$
+\end_inset
+
+ are the principal stresses of stress tensor (
+\begin_inset Formula $\sigma$
+\end_inset
+
+).
+ 
+\end_layout
+
+\begin_layout Standard
+In general, flow rule for frictional materials is non-associative, i.e., flow
+ direction differs from the normal of the yield surface normal.
+ The plastic flow potential for plastic flow [TODO -- is there some duplication
+ in the foregoing phrase?] can be given as
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \begin{equation}
+g\left(\sigma_{n+1}\right)=\tau+q_{\psi}\sigma_{p}\label{eq:plastic flow potential for plastic flow}\end{equation}
+
+\end_inset
+
+where 
+\begin_inset Formula $q_{\psi}$
+\end_inset
+
+ is a function of the dilation angle 
+\begin_inset Formula $\psi$
+\end_inset
+
+.
+ 
+\end_layout
+
+\begin_layout Standard
+In the presence of plasticity, the total strain, 
+\begin_inset Formula $\Delta\varepsilon$
+\end_inset
+
+, is given by
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \begin{equation}
+\Delta\varepsilon=\Delta\varepsilon^{ev}+\Delta\varepsilon^{p},\label{eq:total strain in presence of plasticity}\end{equation}
+
+\end_inset
+
+where 
+\begin_inset Formula $\Delta\varepsilon^{ev}$
+\end_inset
+
+ is the viscoelastic, and 
+\begin_inset Formula $\Delta\varepsilon^{p}$
+\end_inset
+
+ is the plastic strain increment.
+ 
+\end_layout
+
+\begin_layout Standard
+The plastic strain increment, 
+\begin_inset Formula $\Delta\varepsilon^{p}=\beta\frac{\partial g}{\partial\sigma}$
+\end_inset
+
+, where 
+\begin_inset Formula $\beta$
+\end_inset
+
+ is the magnitude of the plastic flow.
+ 
+\begin_inset Formula $\beta$
+\end_inset
+
+ is determined such that updated stress state is on the yield surface, i.e.,
+ 
+\begin_inset Formula $f\left(\sigma^{n}+\Delta\sigma^{n}\right)=0$
+\end_inset
+
+.
+ Linearizing the yield condition we obtain 
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \begin{equation}
+\beta=\frac{f}{G+\kappa q_{\phi}q_{\psi}}\label{eq:linearizing yield condition}\end{equation}
+
+\end_inset
+
+which provides stress correction.
+\end_layout
+
+\begin_layout Subsection
+Remeshing
+\end_layout
+
+\begin_layout Standard
+Remeshing becomes necessary in SNAC through the large deformations associated
+ with plate tectension.
+ In SNAC, remeshing is done by moving the nodes back to their original positions
+, under the constraint that physically meaningful features such as top and
+ bottom topography are conserved.
+ Then both nodal (velocity and temperature) and elemental variables (stress,
+ strain rate, heat flux, and plastic strain) are transferred onto the new
+ mesh from the deformed mesh.
+ The nodal transfer is accomplished by locating the tetrahedron in the old
+ mesh which contains a node of the new mesh.
+ Then shape (interpolation) functions corresponding to the location of the
+ new node with respect to the old element is calculated and used to interpolate
+ nodal quantities of the old mesh.
+ In the case of the elemental variables (integrated by 1-point Gauss quadrature)
+, the quantities are simply transferred to an element of the new mesh from
+ its closest neighbor tetrahedron of the old mesh, which is found based
+ on the distance between quadrature locations.
+ Such a transfer is proven to be variationally consistent and also preserves
+ nonlinear internal constraints as in the case of plasticity [Ortiz and
+ Quigley, 1991].
+ 
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float figure
+wide false
+sideways false
+status collapsed
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Graphics
+	filename figures/remeshing1.png
+	lyxscale 101
+	scale 101
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Graphics
+	filename figures/remeshing2.png
+	lyxscale 39
+	scale 39
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Caption
+
+\begin_layout Standard
+\begin_inset LatexCommand label
+name "fig:Remeshing.-Lagrangian-mesh"
+
+\end_inset
+
+Remeshing.
+ Lagrangian mesh deforms severely as deformation accumulates.
+ This degrades accuracy of the solution, which eventually leads to crash.
+ The nodal values are interpolated on the new regular mesh and the element
+ values are transferred to the nearest neighbor element in the new mesh.
+ 
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Section
+SNAC Design
+\end_layout
+
+\begin_layout Standard
+SNAC follows StGermain's architecture (see Section 
+\begin_inset LatexCommand ref
+reference "sec:StGermain"
+
+\end_inset
+
+, below).
+ Although primarily implemented in C, it is object-oriented, and makes use
+ of extensibility and inheritance.
+ While using StGermain as a framework means SNAC code must follow certain
+ conventions, it means that many abilities are available: XML input, extensible
+ data structures, classified output streams, etc.
+ Python bindings and classes for the key objects and methods have been provided.
+ At the highest level, Pyre components classes have been written so that
+ SNAC can be manipulated through Pyre and coupled to other codes.
+ SNAC is readily customizable through writing ``Plugin'' shared objects
+ that can be loaded dynamically at run-time.
+ The two key design ideas relevant to SNAC are the ``SNAC Context'' and
+ ``Entry Points.'' 
+\end_layout
+
+\begin_layout Subsection
+The SNAC ``Context''
+\end_layout
+
+\begin_layout Standard
+The SNAC Context is the top-level ``master'' object in a SNAC simulation.
+ Its main purpose is twofold:
+\end_layout
+
+\begin_layout Standard
+Providing an interface to control and run a SNAC simulation.
+ This is done mainly through the Entry Points, described in the next section.
+ Packaging together all the high-level data structures that a SNAC run requires,
+ such as the Mesh, boundary conditions, simulation parameters, etc.
+ Most of these objects are extensible/and or configurable using the XML
+ input file.
+\end_layout
+
+\begin_layout Standard
+The SNAC Context inherits from the StGermain Mesh and Abstract Contexts,
+ which provide much of the default functionality.
+ 
+\end_layout
+
+\begin_layout Subsection
+Call-tree of Entry Points 
+\end_layout
+
+\begin_layout Standard
+An Entry Point is essentially a list of function pointers, which can be
+ dynamically modified.
+ When an entry point is called, it runs each of the function pointers in
+ its list sequentially, with the same arguments.
+ Since the SNAC Context calls the entry points in a specific hierarchy,
+ an application's set of entry points define the call-tree for an application.
+\end_layout
+
+\begin_layout Standard
+The reason entry points are dynamic lists of function pointers (or ``hooks'')
+ is that oftentimes the user, say a research scientist, wants to extend
+ the default functionality of an application at only a few specific points
+ in the code.
+ In SNAC, this is simply a matter of adding pointers to their custom functions
+ to the relevant entry points.
+\end_layout
+
+\begin_layout Standard
+The two diagrams below outline the entry points set up in SNAC.
+ It is represented as tree-like hierarchy: If a ``hook'' calls other entry
+ points, either in its own function or other normal functions it calls,
+ the called entry points are below and offset to the right of that hook.
+ 
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float figure
+wide false
+sideways false
+status collapsed
+
+\begin_layout Standard
+\begin_inset Graphics
+	filename figures/SNACCallHierarchyArch.png
+	lyxscale 40
+	scale 40
+
+\end_inset
+
+
+\begin_inset Graphics
+	filename figures/SNACSolveDetails.png
+	lyxscale 40
+	scale 40
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Subsection
+SNAC History 
+\end_layout
+
+\begin_layout Standard
+A long, long time ago … 
+\end_layout
+
+\begin_layout Chapter
+SNAC-Related Software 
+\end_layout
+
+\begin_layout Section
+\begin_inset LatexCommand label
+name "sec:StGermain"
+
+\end_inset
+
+StGermain 
+\end_layout
+
+\begin_layout Standard
+StGermain is a software framework tuned for the development of codes common
+ to the physical sciences, such as geodynamics.
+ It permits developers to build applications that are extensible, adaptable,
+ cleanly designed and interoperable with one other.
+ Moreover, StGermain answers the question of, ``Now that I have written
+ my code, how do I share it with my collaborators with the optional inclusion
+ of their additions?'' This capability is inherent to StGermain and provides
+ an important feature lacking in most scientific codes.
+ As of the end of 2004 [TODO update this year?], StGermain is still under
+ active development and its interfaces are unlikely to be frozen in the
+ near future.
+ 
+\end_layout
+
+\begin_layout Standard
+StGermain is funded primarily through VPAC and Caltech.
+ The project was born with the development of SNAC, and the need to generalize
+ the same abilities that had been incorporated into the development of Snark.
+ It was time to restart from scratch, and was done so late at night under
+ a California moon, aided by some fine Belgian beer and the finest Parisienne
+ electro-jazz.
+ However, it is unclear whether StGermain is named for the French techno-jazz
+ group led by Ludovic Navarre or the famed Paris quartier.
+ 
+\end_layout
+
+\begin_layout Standard
+SNAC is built up from the StGermain framework, an environment for the developmen
+t of physically based scientific codes [Quenette, et al.
+ TODO--need year].
+ As frameworks, StGermain and Pyre differ in that StGermain provides the
+ infrastructural components needed to build complete codes while Pyre provides
+ the superstructure to couple codes together; for this reason the former
+ is considered an infrastructure framework and the later as a superstructure
+ framework.
+ 
+\end_layout
+
+\begin_layout Standard
+StGermain provides a suite of libraries needed by general physical modeling
+ software such as flow control, domain discretization, and initial/boundary
+ condition management [Quenette, et al.
+ TODO--need year].
+ One of the advantages of using the StGermain framework is that a code can
+ be easily extended through entry points and plugins.
+ By adding or removing entry points, a problem-specific algorithm can be
+ implemented while keeping the modification of source codes limited.
+ Plugins are small pieces of codes that work as a part of the program, but
+ can be compiled separately and dynamically loaded at run time.
+ Thus, their developments can be completely independent of the main program.
+ For example, a new constitutive relation or time-varying boundary conditions
+ can be made available as plug-ins without modifying or compiling the whole
+ program that already exists.
+ 
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float figure
+wide false
+sideways false
+status collapsed
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Graphics
+	filename figures/EntryPointHierarchyinStGermain.png
+	lyxscale 50
+	scale 50
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Caption
+
+\begin_layout Standard
+StGermain Framework.
+ An entry point is a function that calls ``hooked-up'' functions, which
+ are defined at the individual application level.
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+StGermain facilitates the coupling of SNAC with regional CitcomS through
+ Pyre.
+ To couple two different scientific codes, Pyre presupposes the proper structuri
+ng of the codes.
+ Specifically, a code should be composed of units abstracted from common
+ features of numerical modeling programs, such as initialization (allocating
+ memory, or assigning values of variables), time marching, application of
+ the boundary conditions, and output [Tan, et al., 2004].
+ Since the integration of SNAC into StGermain inherently includes structuring
+ SNAC according to this general architecture, SNAC can be easily coupled
+ with another structured software, such as regional CitomS, within Pyre.
+ 
+\end_layout
+
+\begin_layout Section
+Pyre 
+\end_layout
+
+\begin_layout Standard
+Pyre is a full-featured, object oriented environment that is capable of
+ handling all aspects of the specification and launching of numerical investigat
+ions, and operates on massively parallel supercomputers including both shared
+ memory computers and Beowulf clusters.
+ Pyre is written in Python, an open source, well maintained and widely used
+ interpretive environment.
+ Python is a modern, object-oriented programming language that is well documente
+d and easily extensible.
+ The Python interpreter has been ported to a wide variety of machines, including
+ massively parallel systems, and comes with interfaces to a wide array of
+ system calls and libraries.
+ In fact, it is the ease with which interfaces to new facilities can be
+ constructed that makes writing a simulation framework in Python such an
+ attractive choice.
+ 
+\end_layout
+
+\begin_layout Standard
+In the Pyre framework, computational facilities are represented in terms
+ of abstract base classes that encapsulate their interaction with the rest
+ of the framework and define the interface that actual instances of these
+ facilities must provide in order to become functional framework components.
+ Pyre simulations are themselves Python programs that execute on each computatio
+nal node and have complete access to the capabilities of the interpreter.
+ 
+\end_layout
+
+\begin_layout Standard
+In order to perform a simulation, the user constructs the various components
+ of the physical model by specifying their geometry.
+ Boundary and initial conditions can be specified by providing a high-level
+ geometrical description of the affected regions of space.
+ This insulates the user from the particular representation of that region
+ of space by any particular solver and allows transparent access to the
+ underlying data structures.
+ Constitutive models and material properties are selected and attached to
+ regions of space in a similar manner.
+ Subsequently, the user selects the solvers that are responsible for the
+ simulation of the behavior of each component.
+ All these activities take place through the programmatic construction of
+ the simulation model (an instance of the class Application), which acts
+ as a convenient repository of the relevant information.
+ The model is handed to the simulation Controller, which is responsible
+ for partitioning the parallel machine into groups of processors, each with
+ its own instance of the relevant Solver descendant, and launches the simulation.
+ 
+\end_layout
+
+\begin_layout Standard
+The user has full control over the structure and implementation of the main
+ simulation loop.
+ A complete specification is provided that governs the interaction between
+ the simulation driver and the various engines and guarantees consistency,
+ but the user is free to add arbitrary operations at any part of the time
+ step.
+ Activities such as checkpoints and on-the-fly visualization are supported
+ with minimal effort on the part of the user.
+ 
+\end_layout
+
+\begin_layout Standard
+Currently (as of October 2001 [TODO--update this year? and information following
+?]), Pyre consists of approximately 35,000 lines of Python and 15,000 lines
+ of C++ in the form of bindings and infrastructure.
+ Examples of third party computational facilities that are already integrated
+ into the framework include MPI from ANL, HDF5, the scalable IO subsystem
+ from NCSA, ACIS, a commercial, industrial strength solid modeler, the visualiza
+tion capabilities of IRIS Explorer28 from NAG, Metis, the graph partitioning
+ package, and GrACE, the adaptive mesh refinement package.
+ 
+\end_layout
+
+\begin_layout Standard
+Computational scientists face the challenge of assimilating large quantities
+ of data that are starting to become available in a variety of formats.
+ Easy access to data stores from within our software package is very important
+ for the validation effort.
+ Pyre provides good support for the construction of data format converters,
+ both in terms of parsing infrastructure and flexible output generation.
+ 
+\end_layout
+
+\begin_layout Standard
+Pyre leverages the extensibility of the Python interpreter to allow for
+ the seamless integration of rather diverse computational facilities.
+ The framework provides enough flexibility to allow the dynamic discovery
+ of available facilities as part of simulation staging.
+ The former implies that there is a well defined and well documented method
+ by which a new solver or a new material model can be made available to
+ the framework, while the latter allows the user to specify solvers and
+ algorithms in the simulation script, without the need for recompilation
+ or relinking.
+ The combination promotes experimentation with new algorithms by lowering
+ the overall overhead associated with trying out new approaches.
+ 
+\end_layout
+
+\begin_layout Section
+Coupling through GeoFramework 
+\end_layout
+
+\begin_layout Standard
+GeoFramework is a framework that relies on Pyre for coupling codes [TODO
+ -- I removed URL as it is not working].
+ Elements (distinct applications) can collaborate within it, coupling two
+ spatially overlapping geophysical applications in such a way that interaction
+ occurs through sharing physical quantities (such as velocity, temperature,
+ or traction) at interfaces.
+ Coupling can solve problems of multi-scale and multi-material nature.
+ For example, modeling localization in crust and the large-scale mantle
+ flow at the same time.
+ 
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float figure
+wide false
+sideways false
+status collapsed
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Graphics
+	filename figures/citcoms-coupling.png
+	lyxscale 65
+	scale 65
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Caption
+
+\begin_layout Standard
+\begin_inset LatexCommand label
+name "fig:CitcomS-Couping.-Within"
+
+\end_inset
+
+CitcomS Couping.
+ Within the containing mesh (blue) within the CitcomS domain (dimension:
+ 45° 
+\begin_inset Formula $\times$
+\end_inset
+
+ 45° 
+\begin_inset Formula $\times$
+\end_inset
+
+ 1200 km) a spherical thermal anomaly drives mantle flow.
+ The embedded mesh of the SNAC domain (yellow) occupies an area within the
+ CitcomS domain (dimension: 20° 
+\begin_inset Formula $\times$
+\end_inset
+
+ 20° 
+\begin_inset Formula $\times$
+\end_inset
+
+ 40 km).
+ 
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Chapter
+Installation 
+\end_layout
+
+\begin_layout Standard
+First you will install StGermain and SNAC, which will be followed by the
+ installation of Pyre.
+ 
+\end_layout
+
+\begin_layout Section
+StGermain and SNAC 
+\end_layout
+
+\begin_layout Standard
+StGermain and SNAC are both available at the 
+\begin_inset LatexCommand htmlurl
+name "Geodynamics Software Packages web page"
+target "geodynamics.org/cig/software/packages"
+
+\end_inset
+
+.
+ You will download StGermain and SNAC (along with Snark, an extensible framework
+ for building Finite Element Method-Particle In Cell applications) at the
+ same time.
+ First, you will need to have MPI available on your machine.
+ 
+\end_layout
+
+\begin_layout Standard
+Advanced users and software developers may be interested in downloading
+ the latest SNAC source code directly from the CIG source code repository,
+ instead of using the prepared source package; see Section 
+\begin_inset LatexCommand ref
+reference "sec:Software-Repository"
+
+\end_inset
+
+ later in this chapter.
+\end_layout
+
+\begin_layout Standard
+SNAC has been tested on [TODO -- is this an accurate list?] Linux and Mac
+ OS X platforms.
+ 
+\end_layout
+
+\begin_layout Subsection
+MPI
+\end_layout
+
+\begin_layout Standard
+StGermain requires an implementation of the MPI-1 standard for parallel
+ message passing, even if you only intend to run the code in serial.
+ Fortunately, there are several free implementations of MPI that run on
+ all flavors of Unix.
+ If you intend to run SNAC on your desktop or a commodity cluster that does
+ not yet have an MPI implementation, the free, open source MPICH is recommended.
+ It is available at: http://www-unix.mcs.anl.gov/mpi/mpich/ 
+\end_layout
+
+\begin_layout Standard
+If you will be running StGermain on a cluster or machine that already has
+ an MPI implementation installed, you should go ahead and set up the environment
+ variables that allow StGermain to use MPI.
+ 
+\end_layout
+
+\begin_layout Standard
+This is done by setting following environment variables so the VMake build
+ system knows where to find MPICH: 
+\end_layout
+
+\begin_layout LyX-Code
+In bash: export MPI_DIR="/usr/local/mpich" 
+\end_layout
+
+\begin_layout LyX-Code
+In tcsh: setenv MPI_DIR /usr/local/mpich 
+\end_layout
+
+\begin_layout Standard
+Again, where /usr/local/mpich is the path where mpich was installed.
+ 
+\end_layout
+
+\begin_layout Standard
+If you need to specify a machine file every time you run mpich, then in
+ order for VMake's "make check" command to work, you'll need to specify
+ another environment variable, MPI_MACHINES.
+ Here are some examples: 
+\end_layout
+
+\begin_layout LyX-Code
+In bash: export MPI_MACHINES="/home/raq/machinefile" 
+\end_layout
+
+\begin_layout LyX-Code
+In tcsh: setenv MPI_MACHINES -machinefile /home/raq/machinefile 
+\end_layout
+
+\begin_layout Subsection
+Obtaining the StGermain Source (in the future)
+\end_layout
+
+\begin_layout Enumerate
+Download the StGermain source code from the Victorian Partnership for Advanced
+ Computing's Computational Software Development Portal.
+ 
+\end_layout
+
+\begin_layout Enumerate
+Register as a VPAC collaborator at: http://csd.vpac.org/portal/admin/registration.p
+hp.
+ [TODO -- need URL (this doesn't work) or procedure needs updating]
+\end_layout
+
+\begin_layout Enumerate
+Login to the CSD portal at 
+\begin_inset LatexCommand htmlurl
+name "VPAC Computational Software Development"
+target "csd.vpac.org"
+
+\end_inset
+
+ using the username and password you just registered.
+ 
+\end_layout
+
+\begin_layout Enumerate
+Click on the ``download'' link on the left of the page, and download the
+ latest available version.
+ 
+\end_layout
+
+\begin_layout Enumerate
+Unzip and untar the file you just downloaded into a suitable directory.
+\end_layout
+
+\begin_layout Subsection
+Obtaining the StGermain Source (current Subversion checkout)
+\end_layout
+
+\begin_layout Standard
+To download the StGermain and SNAC packages via a content version system
+ called Subversion, first you must install the Subversion client software,
+ which, in turn, relies on the installation of a package called neon.
+ Neon is an HTTP and WebDAV client library, with a C interface.
+ Instructions for downloading and installing neon can be found at 
+\begin_inset LatexCommand htmlurl
+name "neon HTTP and WebDAV client library"
+target "www.webdav.org/neon"
+
+\end_inset
+
+.
+ 
+\end_layout
+
+\begin_layout Standard
+After installing neon, you will be ready to install the Subversion client,
+ which is available through http://subversion.tigris.org.
+ 
+\end_layout
+
+\begin_layout Standard
+Once you have the subversion client installed, you will need to register
+ at http://csd.vpac.org/twiki/bin/view/TWiki/TWikiRegistration [TODO -- URL
+ is wrong, gives strange error] for permission to download software from
+ the repository at http://rd01.vpac.org/svn/StGermain [TODO -- URL is not
+ found].
+ Both Snark and SNAC repositories are only available bundled with the StGermain
+ repository to create an all-encompassing repository.
+ 
+\end_layout
+
+\begin_layout Standard
+To obtain the combined StGermain, Snark and SNAC repository: 
+\end_layout
+
+\begin_layout LyX-Code
+$ svn --username=UserName co http://rd01.vpac.org/svn/StGermain/trunk StGermain
+ 
+\end_layout
+
+\begin_layout Enumerate
+replace ``UserName'' with your VPAC twiki user name, 
+\end_layout
+
+\begin_layout Enumerate
+``trunk'' says to obtain only the main trunk, not all branches and tags
+ (this is the default in CVS), 
+\end_layout
+
+\begin_layout Enumerate
+the last ``StGermain'' says to check the repository out into a local directory
+ ``StGermain'' (else it would have been named ``trunk'').
+ 
+\end_layout
+
+\begin_layout Subsection
+Configuring using the VMake build system
+\end_layout
+
+\begin_layout Enumerate
+Tell the build system where libraries are 
+\end_layout
+
+\begin_layout Enumerate
+Type 
+\family typewriter
+./configure.sh 
+\end_layout
+
+\begin_layout Enumerate
+Type 
+\family typewriter
+make
+\family default
+ 
+\end_layout
+
+\begin_layout Enumerate
+The following options can be included in the options argument during configurati
+on in comma-separated form.
+ 
+\end_layout
+
+\begin_deeper
+\begin_layout Description
+optimised compiles optimized code, with no debugging symbols 
+\end_layout
+
+\begin_layout Description
+cautious performs additional run-time validation checks.
+ 
+\end_layout
+
+\begin_layout Description
+macro_as_func compiles some macros as functions instead for safety checks.
+ Will incur a performance penalty.
+ 
+\end_layout
+
+\begin_layout Description
+memory_stats enable statistics recording of the memory module.
+ 
+\end_layout
+
+\begin_layout Description
+tau compiles the code ready for use with the tau profiler 
+\end_layout
+
+\begin_layout Description
+pdt automatically instruments the code for use with tau using pdt 
+\end_layout
+
+\end_deeper
+\begin_layout Standard
+For example, to include cautious checks and memory statistics recording:
+ 
+\end_layout
+
+\begin_layout LyX-Code
+$ ./configure.sh --options=cautious,memory_stats 
+\end_layout
+
+\begin_layout Section
+Pyre 
+\end_layout
+
+\begin_layout Subsection
+Basics 
+\end_layout
+
+\begin_layout Standard
+Pyre is included within a larger package called Pythia.
+ Within the Pyre directory you will find a set of subdirectories, each one
+ of which contains a dedicated piece of infrastructure designed to solve
+ a specific problem.
+ 
+\end_layout
+
+\begin_layout Standard
+Installation requires three steps.
+ First you will need to checkout the most recent version of Pythia, config,
+ and templates from the CVS server.
+ Then you will need to configure your environment.
+ Finally you will run a custom installer script, mm, based on GNU Make.
+ 
+\end_layout
+
+\begin_layout Standard
+The build procedure compiles and links the package and is designed to make
+ codes easily portable to a wide variety of compiler and platform targets.
+ Furthermore, it allows for customization of the compilation process at
+ several different levels.
+ The core of the build procedure is embodied in the shell script mm.
+ Code packages are built and installed by invoking this script, which automatica
+lly determines the host target, locates the appropriate compiler commands
+ and options for this target platform, and issues the necessary commands
+ to build the code packages.
+ The mm script relies on a layered set of definition files that customize
+ behavior and recursive processing of makefiles that describe a package
+ and any subpackages it may contain.
+ 
+\end_layout
+
+\begin_layout Subsection
+Hardware and Software Requirements
+\end_layout
+
+\begin_layout Standard
+10 MB free disk space for Pythia, config, and template downloads
+\end_layout
+
+\begin_layout Standard
+15 MB for compiled package
+\end_layout
+
+\begin_layout Standard
+Pythia package (which includes Pyre)
+\end_layout
+
+\begin_layout Standard
+config package (includes make files)
+\end_layout
+
+\begin_layout Standard
+Python 2.3+ 
+\end_layout
+
+\begin_layout Subsection
+Supported Platforms
+\end_layout
+
+\begin_layout Standard
+As of May 2004 [TODO update this month/year] the following platforms are
+ supported [TODO -- update this list]: 
+\end_layout
+
+\begin_layout Standard
+11AIX-3.0 
+\end_layout
+
+\begin_layout Standard
+AIX-4.3 
+\end_layout
+
+\begin_layout Standard
+AIX-5.1 
+\end_layout
+
+\begin_layout Standard
+CompaqTru64Unix-5.0 
+\end_layout
+
+\begin_layout Standard
+Darwin-6.x 
+\end_layout
+
+\begin_layout Standard
+Darwin-7.x 
+\end_layout
+
+\begin_layout Standard
+DigitalUnix-4.0 
+\end_layout
+
+\begin_layout Standard
+HPUX-10.0 
+\end_layout
+
+\begin_layout Standard
+HPUX-11.1 
+\end_layout
+
+\begin_layout Standard
+Irix-6.2 
+\end_layout
+
+\begin_layout Standard
+Irix-6.4 
+\end_layout
+
+\begin_layout Standard
+Irix-6.5 
+\end_layout
+
+\begin_layout Standard
+Linux-2.0 
+\end_layout
+
+\begin_layout Standard
+SunOS-5.5 
+\end_layout
+
+\begin_layout Standard
+SunOS-5.6 
+\end_layout
+
+\begin_layout Standard
+SunOS-5.7 
+\end_layout
+
+\begin_layout Standard
+SunOS-5.8 
+\end_layout
+
+\begin_layout Standard
+TFLOPS 
+\end_layout
+
+\begin_layout Standard
+Win32-4.0 
+\end_layout
+
+\begin_layout Standard
+Win32-5.1
+\end_layout
+
+\begin_layout Subsection
+Download Pyre from CVS 
+\end_layout
+
+\begin_layout Standard
+Pyre is available via a Concurrent Versions System (CVS) server located
+ at the California Institute of Technology.
+ This allows users to check out the most recent version of the software.
+ Pyre uses an anonymous CVS server so that anyone can check out the code
+ with read-only access.
+ 
+\end_layout
+
+\begin_layout Standard
+Prior to checking out the code, you should have both CVS and SSH running
+ on the machine where you will be working with Pyre.
+ To check, type 
+\family typewriter
+cvs
+\family default
+ and 
+\family typewriter
+ssh
+\family default
+; both should return a usage message and options.
+ 
+\end_layout
+
+\begin_layout LyX-Code
+$ cvs Usage: cvs [cvs-options] command [command-options-and-arguments] more
+ ...
+ 
+\end_layout
+
+\begin_layout LyX-Code
+$ ssh Usage: ssh [options] host [command] more ...
+ 
+\end_layout
+
+\begin_layout Standard
+Since you will be using SSH to retrieve files, you may need to set the 
+\family typewriter
+CVS_RSH
+\family default
+ environment variable.
+ 
+\end_layout
+
+\begin_layout LyX-Code
+$ setenv CVS_RSH ssh 
+\end_layout
+
+\begin_layout Standard
+If you have not used a remote repository before, you will need to set the
+ variable 
+\family typewriter
+CVS_RSH
+\family default
+ to equal "ssh".
+ If you use the bash shell, this means adding the following to your 
+\family typewriter
+$HOME/.bashrc
+\family default
+ file: 
+\end_layout
+
+\begin_layout LyX-Code
+$ export CVS_RSH="ssh" 
+\end_layout
+
+\begin_layout Standard
+Or, if you use a C shell derivative, you should add the following to your
+ 
+\family typewriter
+.cshrc
+\family default
+: 
+\end_layout
+
+\begin_layout LyX-Code
+$ setenv SVS_RSH "ssh" 
+\end_layout
+
+\begin_layout Standard
+To check out the Pyre source code, login to the CVS server, then retrieve
+ your software.
+ The CVS password is 
+\family typewriter
+pyre
+\family default
+.
+ In this case you will want to download the most recent versions of Pythia
+ and templates.
+ You will have to download a directory named 
+\family typewriter
+config
+\family default
+ separately.
+ 
+\family typewriter
+config
+\family default
+ contains the make system required for installation.
+ 
+\family typewriter
+config
+\family default
+ is a system of makefiles that simplifies program construction and deployment.
+ config includes support for dozens of platforms and compilers, including
+ those available at the ASCI supercomputers, permits easy access to external
+ libraries and tools in a portable manner, and allows libraries and executables
+ built from the same sources with different options or different compilers
+ to co-exist.
+ Other features include automatic dependency generation and sensible support
+ for mixed language programming.
+ 
+\end_layout
+
+\begin_layout Standard
+The dialog between you and the server will look something like this: 
+\end_layout
+
+\begin_layout LyX-Code
+$ cvs -d :pserver:pyre at cvs.cacr.caltech.edu:/pyre login 
+\end_layout
+
+\begin_layout LyX-Code
+(Logging in to pyre at cvs.cacr.caltech.edu) 
+\end_layout
+
+\begin_layout LyX-Code
+CVS password: (password is pyre) 
+\end_layout
+
+\begin_layout LyX-Code
+$ cvs -d :pserver:pyre at cvs.cacr.caltech.edu:/pyre co pythia-0.6 
+\end_layout
+
+\begin_layout LyX-Code
+$ cvs -d :pserver:pyre at cvs.cacr.caltech.edu:/pyre co templates 
+\end_layout
+
+\begin_layout LyX-Code
+$ cvs -d :pserver:config at cvs.cacr.caltech.edu:/config login 
+\end_layout
+
+\begin_layout LyX-Code
+(Logging in to config at cvs.cacr.caltech.edu) 
+\end_layout
+
+\begin_layout LyX-Code
+CVS password: (password is config) 
+\end_layout
+
+\begin_layout LyX-Code
+$ cvs -d :pserver:config at cvs.cacr.caltech.edu:/config co config 
+\end_layout
+
+\begin_layout Subsection
+Create New Directories 
+\end_layout
+
+\begin_layout Standard
+You will need to create two directories for the installation, one for the
+ build and one for finished product.
+ In this example, the directories build and export were created in the pathway
+ /Users/username/dv/.
+ $ mkdir build $ mkdir export 
+\end_layout
+
+\begin_layout Subsubsection
+Set the Environment 
+\end_layout
+
+\begin_layout Standard
+Product libraries and binaries are built in subdirectories lib and bin beneath
+ 
+\family typewriter
+BLD_ROOT
+\family default
+.
+ Once a code package has been built, the make target export can be used
+ to install it in a directory below 
+\family typewriter
+EXPORT_ROOT
+\family default
+.
+ The source code for any package to be built using the build procedure is
+ typically stored in a directory below the common root 
+\family typewriter
+BLD_ROOT
+\family default
+.
+ The files for the build system itself are also assumed to be located beneath
+ this common root directory in 
+\family typewriter
+$BLD_ROOT/config
+\family default
+, although this can be overridden by setting the environment variable 
+\family typewriter
+BLD_CONFIG
+\family default
+ to a different path.
+ 
+\end_layout
+
+\begin_layout Standard
+Key environment variables: 
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+BLD_ROOT
+\family default
+ is the location of installation and build
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+EXPORT_ROOT
+\family default
+ is the location of the finished products 
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+TARGET
+\family default
+ can be followed by a comma-delineated list of desired compilation option
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+BLD_CONFIG
+\family default
+ points to a non-default location for the build files 
+\end_layout
+
+\begin_layout Standard
+You must set the 
+\family typewriter
+BLD_ROOT
+\family default
+ and 
+\family typewriter
+EXPORT_ROOT
+\family default
+.
+ First you should name where you would like the code to be built.
+ 
+\end_layout
+
+\begin_layout LyX-Code
+$ export BLD_ROOT=/Users/username/dv/build/ 
+\end_layout
+
+\begin_layout Standard
+Then you should name the directory where the installation will wind up.
+ 
+\end_layout
+
+\begin_layout LyX-Code
+$ export EXPORT_ROOT=/Users/username/pythia-0.6/ 
+\end_layout
+
+\begin_layout Standard
+Note: 
+\family typewriter
+BLD_ROOT
+\family default
+ and 
+\family typewriter
+EXPORT_ROOT
+\family default
+ should not point to the same location! 
+\end_layout
+
+\begin_layout Standard
+
+\family typewriter
+TARGET
+\family default
+ and 
+\family typewriter
+BLD_CONFIG
+\family default
+ are optional.
+ If you would like to indicate any special compile options, this is done
+ with 
+\family typewriter
+TARGET
+\family default
+.
+ These targets are not the same as the make targets, which are defined within
+ the makefiles of a code package in the standard way.
+ The current valid target options are: 
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+debug
+\family default
+ allows you to compile with debugging on 
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+opt
+\family default
+ will compile with optimization on 
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+insure
+\family default
+ will invoke the Insure++ code checking tool to detect errors 
+\end_layout
+
+\begin_layout Description
+purify will link with Purify memory analysis libraries 
+\end_layout
+
+\begin_layout Description
+prof generates extra code to write profiling information 
+\end_layout
+
+\begin_layout Description
+mpi includes MPI header and library files 
+\end_layout
+
+\begin_layout Standard
+For example: 
+\end_layout
+
+\begin_layout LyX-Code
+$ export TARGET=debug,mpi 
+\end_layout
+
+\begin_layout Standard
+If you would prefer to not point to the files located in the build directory,
+ you can point to another location.
+ 
+\end_layout
+
+\begin_layout LyX-Code
+$ export BLD_CONFIG=/Users/username/dv/config/make 
+\end_layout
+
+\begin_layout Subsection
+Build with 
+\family typewriter
+mm
+\family default
+ 
+\end_layout
+
+\begin_layout Standard
+The 
+\family typewriter
+m
+\family default
+m script is invoked in a manner similar to 
+\family typewriter
+make
+\family default
+, for example: 
+\end_layout
+
+\begin_layout LyX-Code
+$ mm [-f <makefile>] [target] 
+\end_layout
+
+\begin_layout Standard
+The default target is 
+\family typewriter
+all
+\family default
+.
+ Other targets can be defined in 
+\family typewriter
+std-targets.def
+\family default
+ or the local makefile.
+ 
+\end_layout
+
+\begin_layout Standard
+The 
+\family typewriter
+-f
+\family default
+ option allows a code package to use makefiles with a different name other
+ than the default name, which is 
+\family typewriter
+Make.mm
+\family default
+.
+ If any target is specified, then mm will build that target rather than
+ the default target given by the makefiles.
+ 
+\end_layout
+
+\begin_layout Standard
+Change to the 
+\family typewriter
+/Users/username/dv/pythia-0.6/packages
+\family default
+ and invoke the 
+\family typewriter
+mm
+\family default
+ script.
+ 
+\end_layout
+
+\begin_layout LyX-Code
+$ cd /Users/username/dv/pythia-0.6/packages 
+\end_layout
+
+\begin_layout LyX-Code
+$ mm 
+\end_layout
+
+\begin_layout Standard
+The script will first check for the existence of the directories indicated
+ by 
+\family typewriter
+BLD_ROOT
+\family default
+ and 
+\family typewriter
+EXPORT_ROOT
+\family default
+.
+ Next, it uses the uname utility to determine the operating system and machine
+ type.
+ This information is later used to select a platform-specific definitions
+ file, which indicates what compilers and standard options to use.
+ 
+\end_layout
+
+\begin_layout Standard
+Once this is done, 
+\family typewriter
+mm
+\family default
+ parses the contents of 
+\family typewriter
+TARGET
+\family default
+ and looks for corresponding target-specific definitions files.
+ These files contain the special flags and definitions that are needed for
+ these compilation options.
+ In addition, a target tag is constructed by combining the name of the target
+ platform with any user-specified targets, and this tag is later used to
+ create target-specific subdirectories where the code package will be built.
+ This allows the build system to simultaneously maintain builds of a code
+ package for many different potential targets.
+ The final setup step is to get the user's name and check for any user-specific
+ file of definitions that may override the standard settings and behaviors.
+ 
+\end_layout
+
+\begin_layout Paragraph*
+Example Installation on Mac OS 10.3 (Panther) 
+\end_layout
+
+\begin_layout LyX-Code
+$ cd dv 
+\end_layout
+
+\begin_layout LyX-Code
+$ mkdir build 
+\end_layout
+
+\begin_layout LyX-Code
+$ mkdir export 
+\end_layout
+
+\begin_layout LyX-Code
+$ export BLD_ROOT=/Users/username/dv/build/ 
+\end_layout
+
+\begin_layout LyX-Code
+$ export EXPORT_ROOT=/Users/username/pythia-0.6/ 
+\end_layout
+
+\begin_layout LyX-Code
+$ export BLD_CONFIG=~/dv/config 
+\end_layout
+
+\begin_layout LyX-Code
+$ export PATH=$BLD_CONFIG/make:$PATH 
+\end_layout
+
+\begin_layout LyX-Code
+$ cd pythia-0.6 
+\end_layout
+
+\begin_layout LyX-Code
+$ mm 
+\end_layout
+
+\begin_layout Subsection
+Test the Installation 
+\end_layout
+
+\begin_layout Standard
+Each Pyre package comes with simple test scripts you can run to test the
+ installation or various tools in the installation.
+ For example, you can run 
+\family typewriter
+diagnostics.py
+\family default
+ in 
+\family typewriter
+~/pythia-0.6/tests/jtest/tests
+\family default
+.
+\end_layout
+
+\begin_layout Chapter
+Running SNAC
+\end_layout
+
+\begin_layout Section
+Using SNAC
+\end_layout
+
+\begin_layout Standard
+Nothing was under this section head.
+\end_layout
+
+\begin_layout Section
+Changing Parameters 
+\end_layout
+
+\begin_layout Standard
+Input parameters of SNAC are defined using the XML syntax 
+\end_layout
+
+\begin_layout LyX-Code
+<param name=
+\emph on
+parameter
+\emph default
+> 
+\emph on
+value
+\emph default
+ </param>
+\end_layout
+
+\begin_layout Standard
+Many of the parameters defined in this fashion can be conceptually grouped
+ based on their functionality.
+ They can also be a member of a structure, or itemized under a list, which
+ in turn can become a member of a structure.
+ 
+\end_layout
+
+\begin_layout Subsection
+Simulation Control Parameters 
+\end_layout
+
+\begin_layout Standard
+Parameters in this group control the time marching in SNAC.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+startTime:
+\family default
+ the starting time of simulation.
+ 0 sec by default.
+ 
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+stopTime:
+\family default
+ the ending time of simulation.
+ 1.0e+20 sec by default.
+ 
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+outputPath
+\family default
+: the relative or absolute path to a directory where outputs are dumped.
+ 
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+dumpEvery
+\family default
+: the interval of time steps to dump outputs.
+ 
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+maxTimeSteps
+\family default
+: the maximum number of time steps.
+ The time marching ends eighter at ``stoptime'' or at ``maxTimeSteps,''
+ whichever comes first.
+ 
+\end_layout
+
+\begin_layout Subsection
+SNAC-specific Parameters 
+\end_layout
+
+\begin_layout Standard
+Parameters in this group are specific to SNAC.
+ 
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+density
+\family default
+: the average density of the material SNAC is simulating.
+ Unit is kg/m3.
+ 
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+gravity
+\family default
+: the gravitational acceleration.
+ 9.8 m/sec2 by default.
+ 
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+demf
+\family default
+: the dimensionless force damping factor.
+ 0.8 by default.
+ 
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+dtType
+\family default
+: the type of time marching method.
+ Either ``dynamic'' or ``constant.'' 
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+timeStep:
+\family default
+ the size of time step in seconds.
+ Used only when dtType is ``constant.''
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+forceCalcType
+\family default
+: the type of assembling forces on the parallel boundary nodes.
+ 
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+quick
+\family default
+: the least amount of computation.
+ Used only in serial runs.
+ 
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+normal
+\family default
+: works in both serial and 1D parallel runs.
+ 
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+complete
+\family default
+: the slowest, because MPI calls are involved.
+ However, this should be used in 2D parallel runs.
+ 
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+decomposedAxis
+\family default
+: axis to decompose for parallel runs.
+ 0, 1, or 2 for x, y, and z axis, respectively.
+ 
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+storeForces
+\family default
+: ``yes'' to store residual forces for each node.
+ Otherwise, ``no.''
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+forceCheckSum
+\family default
+: If ``yes,'' the sum of forces is checked if it is consistent.
+\end_layout
+
+\begin_layout Subsection
+Plug-ins List 
+\end_layout
+
+\begin_layout Standard
+All the plugins to load should be listed under the ``extensions'' or ``plugins''
+ list as in the following example:
+\end_layout
+
+\begin_layout LyX-Code
+<list name="extensions"> 
+\end_layout
+
+\begin_layout LyX-Code
+        <param> SnacSpherical </param> 
+\end_layout
+
+\begin_layout LyX-Code
+</list>
+\end_layout
+
+\begin_layout Standard
+Note the changed syntax used for the item of the list.
+ One can populate the list with other plugins.
+ The following is the list of plugins available for SNAC:
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+SnacSpherical:
+\family default
+ needed to generate a spherical shell mesh.
+ 
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+SnacRemesher
+\family default
+: when using remeshing.
+ The related parameters should also be set.
+ 
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+SnacTemperature
+\family default
+: when solving for heat diffusion equation.
+ 
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+SnacElastic/SnacMaxwell/SnacViscoPlastic
+\family default
+: for elastic, Maxwell viscoelastic, and viscoplastic, respectively.
+ Note that ViscoPlastic and Maxwell requires to load SNAC Temperature.
+ 
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+SnacHydroStaticIC:
+\family default
+ generates an initial stress field assuming hydrostatic equilibrium.
+ Meaningful only when gravity is non-zero.
+ 
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+SnacWinklerForce
+\family default
+: When gravity is non-zero, and there are no boundary conditions for the
+ vertical component on the bottom surface, the Winkler foundation is applied.
+ 
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+SnacPlSeeds
+\family default
+: can control the positions of elements that have the initial non-zero plastic
+ strain.
+ These elements play the role of seeds where strain localization initiates.
+ 
+\end_layout
+
+\begin_layout Subsection
+Mesh Structure 
+\end_layout
+
+\begin_layout Standard
+Parameters needed for generating a mesh are grouped as members of ``
+\family typewriter
+mesh
+\family default
+'' structure.
+ 
+\family typewriter
+meshSize[I,J,K]
+\family default
+ specifies the node numbers in 
+\family typewriter
+x
+\family default
+, 
+\family typewriter
+y
+\family default
+, and 
+\family typewriter
+z
+\family default
+ axis, respectively, while 
+\family typewriter
+[min,max][X,Y,Z]
+\family default
+ defines the physical dimensions of the domain in meter.
+ In case of using spherical geometry, 
+\family typewriter
+[theta,phi,r][Min,Max]
+\family default
+ should have appropriate values so that 
+\family typewriter
+SnacSpherical
+\family default
+ plugin can use them to initialize spherical node coordinates.
+ 
+\family typewriter
+theta
+\family default
+ and 
+\family typewriter
+phi
+\family default
+ are longitudes and latitudes in degrees, and 
+\family typewriter
+r[Min,Max]
+\family default
+ are the radii in meters.
+ SNAC will not be confused even if both sets of parameters are present in
+ one input file.
+ Finally, 
+\family typewriter
+meshType
+\family default
+ is either ``
+\family typewriter
+cartesian
+\family default
+'' or ``
+\family typewriter
+spherical
+\family default
+.'' If not specified, it is 
+\family typewriter
+cartesian
+\family default
+ by default.
+ However, it is important to assign a correct value for remeshing.
+ 
+\end_layout
+
+\begin_layout Subsection
+Parameters for Material Property 
+\end_layout
+
+\begin_layout Standard
+Four groups of parameters define elastic, viscous, plastic, and thermal
+ properties of material.
+ Asssigned values should have MKS units.
+ XML syntax is 
+\end_layout
+
+\begin_layout LyX-Code
+<param name="parameter"> value </param>
+\end_layout
+
+\begin_layout Itemize
+
+\family typewriter
+Elastic material parameters
+\family default
+: lambda, mu Lame's constants.
+ 
+\end_layout
+
+\begin_layout Itemize
+
+\family typewriter
+Viscous material parameters
+\family default
+: 
+\family typewriter
+refvisc, reftemp, activationE, srexponent, vis_min, 
+\family default
+and
+\family typewriter
+ vis_max 
+\end_layout
+
+\begin_deeper
+\begin_layout Standard
+The following function form of viscosity is assumed by default: 
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \begin{equation}
+\eta\left(T,\dot{\varepsilon}\right)=\eta_{0}\dot{\varepsilon}^{\left(1-1/n\right)}\exp\left(\frac{E^{*}}{R}\left(\frac{1}{T}-\frac{1}{T_{0}}\right)\right),\label{eq:functionformviscosity}\end{equation}
+
+\end_inset
+
+where 
+\begin_inset Formula $\eta_{0}^{}$
+\end_inset
+
+ is ``
+\family typewriter
+refvisc
+\family default
+'' (Pa), 
+\begin_inset Formula $n$
+\end_inset
+
+ is ``
+\family typewriter
+srexponent
+\family default
+'' (dimensionless integer), 
+\begin_inset Formula $E^{*}$
+\end_inset
+
+ is ``
+\family typewriter
+activationE
+\family default
+'' (J), 
+\begin_inset Formula $T_{0}$
+\end_inset
+
+ is ``reftemp'' (K), 
+\begin_inset Formula $,\dot{\varepsilon}$
+\end_inset
+
+ is strain rate, and 
+\begin_inset Formula $R$
+\end_inset
+
+ is the Gas constant.
+ ``
+\family typewriter
+vis_min
+\family default
+'' and ``
+\family typewriter
+vis_max
+\family default
+'' are used to set the range of viscosity variation.
+ Other viscosity models can be easily implemented by modifying
+\family typewriter
+ Constitutive.c
+\family default
+ in the relevant plugins (
+\family typewriter
+SnacMaxwell 
+\family default
+and 
+\family typewriter
+SnacViscoPlastic
+\family default
+).
+\end_layout
+
+\end_deeper
+\begin_layout Itemize
+
+\family typewriter
+Plastic material parameters
+\family default
+ 
+\end_layout
+
+\begin_deeper
+\begin_layout Standard
+Plastic parameters can dynamically vary and are approximated by piecewise
+ linear function of accumulated plastic strain.
+ So, the number of linear segments is defined first by nsegments.
+ If nsegments is n, n+1 values of parameters are required to define the
+ n linear segments.
+ 
+\end_layout
+
+\begin_layout Standard
+Plasticity models used in SNAC are Drucker-Prager and Mohr-Coulomb.
+ The corresponding parameter name is yieldcriterion, and the legitimate
+ values it can assume are druckerprager and mohrcoulomb.
+ 
+\end_layout
+
+\begin_layout Standard
+Three parameters are necessary to define each model's yield function: friction
+ angle, dilation angle, and cohesion.
+ The parameters should be named as ``parameter + [0,…,n].'' So the input
+ file should have 
+\family typewriter
+frictionAngle0, frictionAngle1, 
+\family default
+...; 
+\family typewriter
+dilationAngle0, dilationAngle1, 
+\family default
+...; and 
+\family typewriter
+cohession0, cohesion1,
+\family default
+....
+\end_layout
+
+\begin_layout Standard
+To avoid a singularity of the yield surface at the tensional limit, SNAC
+ defines 
+\family typewriter
+tension_off
+\family default
+, a practical limit to tensional stress over which yielding occurs even
+ if the stress state is not on the yield surface.
+ The following is an example of defining plastic materiala parameters:
+\end_layout
+
+\begin_layout LyX-Code
+<param name="nsegments"> 
+\end_layout
+
+\begin_layout LyX-Code
+    2</param> 
+\end_layout
+
+\begin_layout LyX-Code
+<param name="nsegments"> 
+\end_layout
+
+\begin_layout LyX-Code
+    2</param> 
+\end_layout
+
+\begin_layout LyX-Code
+<param name="plstrain0"> 
+\end_layout
+
+\begin_layout LyX-Code
+    0.0</param> 
+\end_layout
+
+\begin_layout LyX-Code
+<param name="plstrain1"> 
+\end_layout
+
+\begin_layout LyX-Code
+    0.1</param> 
+\end_layout
+
+\begin_layout LyX-Code
+<param name="plstrain2">  
+\end_layout
+
+\begin_layout LyX-Code
+    1000.0</param> 
+\end_layout
+
+\begin_layout LyX-Code
+<param name="frictionAngle0"> 
+\end_layout
+
+\begin_layout LyX-Code
+    30.0</param> 
+\end_layout
+
+\begin_layout LyX-Code
+<param name="frictionAngle1"> 
+\end_layout
+
+\begin_layout LyX-Code
+    20.0</param> 
+\end_layout
+
+\begin_layout LyX-Code
+<param name="frictionAngle2"> 
+\end_layout
+
+\begin_layout LyX-Code
+    20.0</param> 
+\end_layout
+
+\begin_layout LyX-Code
+<param name="dilationAngle0"> 
+\end_layout
+
+\begin_layout LyX-Code
+    30.0</param> 
+\end_layout
+
+\begin_layout LyX-Code
+<param name="dilationAngle1"> 
+\end_layout
+
+\begin_layout LyX-Code
+    30.0</param> 
+\end_layout
+
+\begin_layout LyX-Code
+<param name="dilationAngle2"> 
+\end_layout
+
+\begin_layout LyX-Code
+    30.0</param> 
+\end_layout
+
+\begin_layout LyX-Code
+<param name="cohesion0"> 
+\end_layout
+
+\begin_layout LyX-Code
+    4.0e+07</param> 
+\end_layout
+
+\begin_layout LyX-Code
+<param name="cohesion1"> 
+\end_layout
+
+\begin_layout LyX-Code
+    1.0e+06</param> 
+\end_layout
+
+\begin_layout LyX-Code
+<param name="cohesion2"> 
+\end_layout
+
+\begin_layout LyX-Code
+    1.0e+06</param> 
+\end_layout
+
+\begin_layout LyX-Code
+<param name="ten_off"> 
+\end_layout
+
+\begin_layout LyX-Code
+    1.0e+13</param>
+\end_layout
+
+\end_deeper
+\begin_layout Itemize
+
+\family typewriter
+Thermal material parameters
+\family default
+ 
+\end_layout
+
+\begin_deeper
+\begin_layout Standard
+Only two parameters need to be defined: thermal conductivity and heat capacity.
+ The parameter names are 
+\family typewriter
+thermal_conduct
+\family default
+ and 
+\family typewriter
+heatCapacity
+\family default
+, and appropriate values in MKS unit should be assigned.
+\end_layout
+
+\end_deeper
+\begin_layout Itemize
+
+\family typewriter
+Remesher parameters
+\family default
+ 
+\end_layout
+
+\begin_deeper
+\begin_layout Standard
+Remeshing is trigerred when the mesh is distorted too much.
+ The criteria to determine when to remesh are the number of time steps and
+ the minimum length scale.
+ The former requires a priori knowledge on the rate of deformation because
+ SNAC's remeshing algorithm would fail if the displacement is larger than
+ one-element size.
+ Using this criterion make it convenient to force remeshing on a regular
+ basis.
+ The latter criterion allows SNAC to have a dynamically determined frequency
+ of remeshing.
+ The length scale is the global minimum of the ratio of a tetrahedron's
+ volume to one of its surface area.
+ If this minimum length scale decreases below some fraction of the initial
+ value, remeshing is triggered.
+ The parameter name for the type of criterion is remeshCondition, of which
+ possible values are onTimeStep, 
+\family typewriter
+onMinLengthScale
+\family default
+, and 
+\family typewriter
+onBothTimeStepLength
+\family default
+.
+ The critical value for time step and minimum length scale should be provided.
+ 
+\family typewriter
+remeshLoopCriterion
+\family default
+ and 
+\family typewriter
+remeshLengthCriterion
+\family default
+ are the parameter names, and they take a positive integer and a positive
+ number less than 1 as values, respectively.
+\end_layout
+
+\begin_layout LyX-Code
+<param name="remeshCondition"> 
+\end_layout
+
+\begin_layout LyX-Code
+    onBothLoopLength</param> 
+\end_layout
+
+\begin_layout LyX-Code
+<param name="remeshLoopCriterion"> 
+\end_layout
+
+\begin_layout LyX-Code
+    10</param> 
+\end_layout
+
+\begin_layout LyX-Code
+<param name="remeshLengthCriterion"> 
+\end_layout
+
+\begin_layout LyX-Code
+    0.5</param>
+\end_layout
+
+\end_deeper
+\begin_layout Subsection
+Initial Conditions Structure 
+\end_layout
+
+\begin_layout Standard
+Two structures need to be constructed for defining the initial conditions.
+ One is for variables associated with nodes, the other for the element-associate
+d ones.
+ A name is assigned to the structure first.
+ This structure will have only a single list as a member.
+ This list in turn can have a series of structures of which members are
+ the type of initial conditions and the list of variables.
+ Finally, the list of variables has structures for each variable to be initializ
+ed.
+ The lowest level structure will have name, type and value for the variable.
+ The following is an example of constructing such a structure.
+ 
+\end_layout
+
+\begin_layout LyX-Code
+<!-- node ICs: initical conditions for nodal variables, i.e., velocity and
+ temperature --> 
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="nodeICs"> 
+\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"> 
+\end_layout
+
+\begin_layout LyX-Code
+                    AllNodesVC</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"> 
+\end_layout
+
+\begin_layout LyX-Code
+                            vx</param> 
+\end_layout
+
+\begin_layout LyX-Code
+                        <param name="type"> 
+\end_layout
+
+\begin_layout LyX-Code
+                            double</param> 
+\end_layout
+
+\begin_layout LyX-Code
+                        <param name="value">      
+\end_layout
+
+\begin_layout LyX-Code
+                            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"> 
+\end_layout
+
+\begin_layout LyX-Code
+                            vy</param> 
+\end_layout
+
+\begin_layout LyX-Code
+                        <param name="type"> 
+\end_layout
+
+\begin_layout LyX-Code
+                            double</param> 
+\end_layout
+
+\begin_layout LyX-Code
+                        <param name="value"> 
+\end_layout
+
+\begin_layout LyX-Code
+                            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">   
+\end_layout
+
+\begin_layout LyX-Code
+                            vz</param> 
+\end_layout
+
+\begin_layout LyX-Code
+                        <param name="type"> 
+\end_layout
+
+\begin_layout LyX-Code
+                            double</param> 
+\end_layout
+
+\begin_layout LyX-Code
+                        <param name="value"> 
+\end_layout
+
+\begin_layout LyX-Code
+                            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
+            <struct> 
+\end_layout
+
+\begin_layout LyX-Code
+                <param name="type"> 
+\end_layout
+
+\begin_layout LyX-Code
+                     AllNodesVC</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"> 
+\end_layout
+
+\begin_layout LyX-Code
+                            temperature</param> 
+\end_layout
+
+\begin_layout LyX-Code
+                        <param name="type"> 
+\end_layout
+
+\begin_layout LyX-Code
+                            double</param> 
+\end_layout
+
+\begin_layout LyX-Code
+                        <param name="value"> 
+\end_layout
+
+\begin_layout LyX-Code
+                            500.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 LyX-Code
+<!-- element ICs: initial conditions for elemental variables.
+ Currently, material type is not used.
+ The block for hydrostatic pressure should be accompanied by "SnacHydroStaticIC"
+ module in the above module list.
+ --> 
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="elementICs"> 
+\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"> 
+\end_layout
+
+\begin_layout LyX-Code
+                    AllElementsVC</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"> 
+\end_layout
+
+\begin_layout LyX-Code
+                            elementMaterial</param> 
+\end_layout
+
+\begin_layout LyX-Code
+                        <param name="type"> 
+\end_layout
+
+\begin_layout LyX-Code
+                            int</param> 
+\end_layout
+
+\begin_layout LyX-Code
+                        <param name="value"> 
+\end_layout
+
+\begin_layout LyX-Code
+                            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
+            <struct> 
+\end_layout
+
+\begin_layout LyX-Code
+                <param name="type"> 
+\end_layout
+
+\begin_layout LyX-Code
+                    AllElementsVC</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"> 
+\end_layout
+
+\begin_layout LyX-Code
+                            hydroStatic</param> 
+\end_layout
+
+\begin_layout LyX-Code
+                        <param name="type"> 
+\end_layout
+
+\begin_layout LyX-Code
+                            func</param> 
+\end_layout
+
+\begin_layout LyX-Code
+                        <param name="value"> 
+\end_layout
+
+\begin_layout LyX-Code
+                            SnacHydroStaticIC_IC</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
+Note that the type of the data structure used for initial conditions in
+ StGermain are 
+\family typewriter
+AllNodesVC
+\family default
+ and 
+\family typewriter
+AllElementsVC
+\family default
+.
+ These types are used to assign values to all the nodes or elements (see
+ Section 
+\begin_inset LatexCommand ref
+reference "sub:Boundary-Conditions-Structure"
+
+\end_inset
+
+ for other types of structure).
+ 
+\end_layout
+
+\begin_layout Standard
+Two ways of assigning a value to all nodes or elements are available.
+ One is to put a single value for the ``value'' member in the lowest-level
+ structure as in the next example:
+\end_layout
+
+\begin_layout LyX-Code
+<struct>
+\end_layout
+
+\begin_layout LyX-Code
+    <param name="name"> 
+\end_layout
+
+\begin_layout LyX-Code
+        temperature</param> 
+\end_layout
+
+\begin_layout LyX-Code
+    <param name="type"> 
+\end_layout
+
+\begin_layout LyX-Code
+        double</param> 
+\end_layout
+
+\begin_layout LyX-Code
+    <param name="value"> 
+\end_layout
+
+\begin_layout LyX-Code
+        500.0</param> 
+\end_layout
+
+\begin_layout LyX-Code
+</struct>
+\end_layout
+
+\begin_layout Standard
+The other way is to put ``
+\family typewriter
+function
+\family default
+'' in the ``
+\family typewriter
+type
+\family default
+'' member and the function's name in the ``
+\family typewriter
+value
+\family default
+'' member as follows:
+\end_layout
+
+\begin_layout LyX-Code
+<struct> 
+\end_layout
+
+\begin_layout LyX-Code
+    <param name="name"> 
+\end_layout
+
+\begin_layout LyX-Code
+        hydroStatic</param> 
+\end_layout
+
+\begin_layout LyX-Code
+    <param name="type"> 
+\end_layout
+
+\begin_layout LyX-Code
+        func</param> 
+\end_layout
+
+\begin_layout LyX-Code
+    <param name="value"> 
+\end_layout
+
+\begin_layout LyX-Code
+        SnacHydroStaticIC_IC</param> 
+\end_layout
+
+\begin_layout LyX-Code
+</struct>
+\end_layout
+
+\begin_layout Standard
+This kind of function is called a ``condition function,'' and should be
+ defined in one of the loaded plugins.
+ One can find an example in 
+\family typewriter
+TestCondition.c
+\family default
+ in the 
+\family typewriter
+SnacSpherical
+\family default
+ plugin’s source code directory.
+ More details are found in the StGermain manual.
+ Using this function makes it possible to assign values varying according
+ to the spatial positions, or the indexes of each element.
+\end_layout
+
+\begin_layout Standard
+In most situations, a user can keep the overall structure as it is in the
+ above example and would have only to modify the lowest level structure.
+\end_layout
+
+\begin_layout Subsection
+\begin_inset LatexCommand label
+name "sub:Boundary-Conditions-Structure"
+
+\end_inset
+
+Boundary Conditions Structure 
+\end_layout
+
+\begin_layout Standard
+The syntax to define a structure for boundary conditions is almost the same
+ with the initial conditions.
+ As in the case of initial conditions, a user can reuse most parts of the
+ listing given below.
+ For example, the name of the highest-level structure, ``
+\family typewriter
+velocityBCs
+\family default
+,'' need not be changed for every different problem.
+ Thus, only a few notable differences are addressed here.
+\end_layout
+
+\begin_layout Standard
+The value for the type of the second-level structure is wallVC.
+ This structure type requires specifying which ``wall'' to apply boundary
+ conditions to.
+ For SNAC, one of left, right, top, bottom, back, or front can be assigned
+ to a parameter named 
+\family typewriter
+wall
+\family default
+.
+ Those six values represent surfaces of which nodes have minimum x index,
+ maximum x index, minimum y index, maximum y index, minimum z index, and
+ maximum z index, respectively.
+ By including the following listing in an input XML file, the x component
+ of velocity of all the nodes belonging to the model's left wall will have
+ a value, -5.0e-08 (m/s), as a double precision number:
+\end_layout
+
+\begin_layout LyX-Code
+<struct name="velocityBCs"> 
+\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"> 
+\end_layout
+
+\begin_layout LyX-Code
+                WallVC</param>  
+\end_layout
+
+\begin_layout LyX-Code
+            <param name="wall"> 
+\end_layout
+
+\begin_layout LyX-Code
+                left</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"> 
+\end_layout
+
+\begin_layout LyX-Code
+                        vx</param> 
+\end_layout
+
+\begin_layout LyX-Code
+                    <param name="type"> 
+\end_layout
+
+\begin_layout LyX-Code
+                        double</param> 
+\end_layout
+
+\begin_layout LyX-Code
+                    <param name="value"> 
+\end_layout
+
+\begin_layout LyX-Code
+                        -5.0e-08</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
+It is straightforward to apply boundary conditions for other components
+ of velocity on the same wall.
+ One can simply put something like 
+\end_layout
+
+\begin_layout LyX-Code
+<struct> 
+\end_layout
+
+\begin_layout LyX-Code
+    <param name="name"> 
+\end_layout
+
+\begin_layout LyX-Code
+        vy</param> 
+\end_layout
+
+\begin_layout LyX-Code
+    <param name="type"> 
+\end_layout
+
+\begin_layout LyX-Code
+        double</param> 
+\end_layout
+
+\begin_layout LyX-Code
+    <param name="value"> 
+\end_layout
+
+\begin_layout LyX-Code
+        -1.0e-08</param> 
+\end_layout
+
+\begin_layout LyX-Code
+</struct> 
+\end_layout
+
+\begin_layout Standard
+between 
+\family typewriter
+<list name="variables">
+\family default
+ and 
+\family typewriter
+</list>
+\family default
+.
+ However, to work on other walls than "left", one needs to replicate a higher-le
+vel structure.
+\end_layout
+
+\begin_layout Standard
+The temperature boundary conditions take the same structure.
+ The following example shows how to apply a uniform temperature of 500.0\InsetSpace ~
+°C
+ to all the top surface nodes:
+\end_layout
+
+\begin_layout LyX-Code
+<!-- Temperature BCs --> 
+\end_layout
+
+\begin_layout LyX-Code
+    <struct name="temperatureBCs"> 
+\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"> 
+\end_layout
+
+\begin_layout LyX-Code
+                    WallVC</param> 
+\end_layout
+
+\begin_layout LyX-Code
+                <param name="wall"> 
+\end_layout
+
+\begin_layout LyX-Code
+                    top</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"> 
+\end_layout
+
+\begin_layout LyX-Code
+                            temperature</param> 
+\end_layout
+
+\begin_layout LyX-Code
+                        <param name="type"> 
+\end_layout
+
+\begin_layout LyX-Code
+                            double</param> 
+\end_layout
+
+\begin_layout LyX-Code
+                        <param name="value"> 
+\end_layout
+
+\begin_layout LyX-Code
+                            500.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
+Again, one can replace the double type of the lowest-level structure with
+ ``func'' to use a condition function.
+ In that case, the function’s name should be supplied as the structure's
+ value.
+ 
+\end_layout
+
+\begin_layout Section
+Complete Example XML file 
+\end_layout
+
+\begin_layout LyX-Code
+TODO: old manual example from 2004-05-28 06:48:27Z SteveQuenette -- generate
+ new example and paste here
+\end_layout
+
+\begin_layout Chapter
+Postprocessing and Graphics 
+\end_layout
+
+\begin_layout Section
+Introduction 
+\end_layout
+
+\begin_layout Standard
+To visualize your results, it is recommended that you use the open source
+ Open Visualization Data Explorer, better known as OpenDX.
+ Both the software and tutorials are available from the 
+\begin_inset LatexCommand htmlurl
+name "OpenDX website"
+target "www.opendx.org"
+
+\end_inset
+
+.
+ Once you have run SNAC, you should have a series of files in the 
+\family typewriter
+/scratch/users/
+\family default
+ directory.
+ You will have to retrieve and combine the data for the time-step (age)
+ of interest.
+ To combine the data, you need to run a script ...
+ 
+\end_layout
+
+\begin_layout Paragraph*
+Example SNAC output files for OpenDX
+\end_layout
+
+\begin_layout LyX-Code
+snac.0.000000.dx snac.0.000002.dx snac.0.000004.dx snac.0.000006.dx 
+\end_layout
+
+\begin_layout LyX-Code
+snac.0.000008.dx snac.0.000010.dx snac.0.000012.dx snac.0.000001.dx 
+\end_layout
+
+\begin_layout LyX-Code
+snac.0.000003.dx snac.0.000005.dx snac.0.000007.dx snac.0.000009.dx 
+\end_layout
+
+\begin_layout LyX-Code
+snac.0.000011.dx
+\end_layout
+
+\begin_layout Subsection
+Using OpenDX 
+\end_layout
+
+\begin_layout Standard
+[from the CitComS manual -- TODO - remove note, and change CitComS > SNAC?]
+ OpenDX ``modules'' designed for CitComS can be found in the user/GeoFramework/p
+ackages/CitcomS/visual directory.
+ You will need those as well as the 
+\family typewriter
+.net
+\family default
+ and 
+\family typewriter
+.cfg
+\family default
+ files.
+ Create a working directory named visual and copy the files and OpenDX macros
+ into it.
+ You will need different files depending on whether you are generating a
+ regional or global model.
+ In this example, you will use the regional versions, which have regional
+ in the filename.
+ 
+\end_layout
+
+\begin_layout LyX-Code
+$ mkdir visual 
+\end_layout
+
+\begin_layout LyX-Code
+$ cp visregional.cfg 
+\end_layout
+
+\begin_layout LyX-Code
+$ cp visregional.net 
+\end_layout
+
+\begin_layout LyX-Code
+$ cp OpenDX Macro [names] 
+\end_layout
+
+\begin_layout Standard
+Next you should type 
+\end_layout
+
+\begin_layout LyX-Code
+$ dx -macros OpenDXMacro 
+\end_layout
+
+\begin_layout Standard
+You will see an OpenDX ``data explorer'' window.
+ Click ``edit visual programs'' and select the 
+\family typewriter
+.net
+\family default
+ file.
+ Then select on the import tab in the main window and double-click on the
+ File Selector block, which will open a control panel window.
+ 
+\end_layout
+
+\begin_layout Chapter
+SNAC Cookbook 
+\end_layout
+
+\begin_layout Section
+Introduction 
+\end_layout
+
+\begin_layout Standard
+These cookbook examples are meant to serve as a guide to some of the different
+ types of problems SNAC can solve.
+ The Cookbook examples include both regional as well as problems in a full
+ spherical shell.
+ These examples address more or less traditional convection problems.
+ For additional information and introduction to the code coupling features
+ made possible by the Pyre framework, please refer to Chapter [TODO - which
+ chapter to reference?].
+\end_layout
+
+\begin_layout Section
+Cookbook 1
+\end_layout
+
+\begin_layout Subsection
+Problem 
+\end_layout
+
+\begin_layout Subsection
+Solution 
+\end_layout
+
+\begin_layout Subsection
+Discussion
+\end_layout
+
+\begin_layout Chapter
+SNAC's Plasticity Model (from TWiki)
+\end_layout
+
+\begin_layout Standard
+The yield criterion corresponds to a Mohr-Coulomb failure envelope with
+ tension cut-off.
+ A non-associated flow rule [is ? -- TODO] for shear failure, and an associated
+ flow rule for tensional failure controls plastic flow.
+ 
+\end_layout
+
+\begin_layout Section
+Benchmark problem I 
+\end_layout
+
+\begin_layout Standard
+Problem Description (excerpted from the FLAC3D manual, p.
+ G-25) [TODO - reference needed for biblio].
+ This problem concerns the determination of stresses in a Mohr-Coulomb material
+ subjected to an odometer test.
+ In this experiment, two of the principal stress components are equal and,
+ during plastic flow, the stress point evolves along a vertex of the Mohr-Coulom
+b criterion representation in the Pi-plane.
+ 
+\end_layout
+
+\begin_layout Subsection
+Model Setup 
+\end_layout
+
+\begin_layout Itemize
+Bulk modulus = 2.0e8 Pa
+\end_layout
+
+\begin_layout Itemize
+Shear modulus = 2.0e8 Pa 
+\end_layout
+
+\begin_layout Itemize
+Cohesion = 1 MPa 
+\end_layout
+
+\begin_layout Itemize
+friction angle = 10 degrees 
+\end_layout
+
+\begin_layout Itemize
+dilation angle = 10 degrees 
+\end_layout
+
+\begin_layout Itemize
+tension cut-off = 5.67 Mpa 
+\end_layout
+
+\begin_layout Itemize
+Boundary Conditions: Vy = -1.0e-5 m/sec on the top surface.
+ All the other surfaces are confined to their normal directions.
+\end_layout
+
+\begin_layout Itemize
+dt = 1 sec 
+\end_layout
+
+\begin_layout Itemize
+mesh size: 1 m 
+\begin_inset Formula $\times$
+\end_inset
+
+ 1 m 
+\begin_inset Formula $\times$
+\end_inset
+
+ 1 m, and 5 
+\begin_inset Formula $\times$
+\end_inset
+
+ 5 
+\begin_inset Formula $\times$
+\end_inset
+
+ 5 nodes.
+\end_layout
+
+\begin_layout Itemize
+Use this file to reproduce this result: input file 
+\family typewriter
+plastic.xml
+\end_layout
+
+\begin_layout Itemize
+S_yy component of stress and E_yy component of strain are monitored.
+ Due to the transient waves, values were averaged over the top elements
+ layer.
+ 
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float figure
+wide false
+sideways false
+status collapsed
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Graphics
+	filename figures/mesh-with-vbc.png
+	lyxscale 60
+	scale 60
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Caption
+
+\begin_layout Standard
+Mesh plotted with velocity boundary conditions
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Subsection
+Results 
+\end_layout
+
+\begin_layout Itemize
+Stress-strain diagram is made using S_yy and E_yy from both numerical and
+ analytic solutions.
+ 
+\end_layout
+
+\begin_layout Itemize
+Relative error is about 0.8 %.
+ 
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float figure
+wide false
+sideways false
+status collapsed
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Graphics
+	filename figures/snac-stress-chart.png
+	lyxscale 40
+	scale 40
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Caption
+
+\begin_layout Standard
+TODO need caption
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Section
+Benchmark Problem II 
+\end_layout
+
+\begin_layout Standard
+Problem Description: Expansion of a thick cylinder under uniform internal
+ pressure.
+ 
+\end_layout
+
+\begin_layout Standard
+A constant and uniform internal pressure is applied to the inner surface
+ of a thick cylinder without pre-stress.
+ Taking advantage of symmetry, only a quadrant of the cylinder is modeled.
+ The outer surface has zero confining pressure.
+ Tresca yield criterion is used (i.e., internal friction is ignored and only
+ cohesion matters).
+\end_layout
+
+\begin_layout Subsection
+Model Setup
+\end_layout
+
+\begin_layout Itemize
+Bulk modulus = 2.0e8 Pa 
+\end_layout
+
+\begin_layout Itemize
+Shear modulus = 2.0e8 Pa 
+\end_layout
+
+\begin_layout Itemize
+Cohesion = 1 MPa 
+\end_layout
+
+\begin_layout Itemize
+friction angle = 0 degrees 
+\end_layout
+
+\begin_layout Itemize
+dilation angle = 0 degrees 
+\end_layout
+
+\begin_layout Itemize
+tension cut-off = 5.67e8 Pa 
+\end_layout
+
+\begin_layout Itemize
+Geometry of cylinder: a (inner radius) = 3.0 m, b (outer radius) = 10.0 m.
+ 
+\end_layout
+
+\begin_layout Itemize
+Boundary Conditions: P = 2.0e7 Pa at r = a, and P = 0.0 at r = b.
+ Top and bttom: Vy=0.0, free-slip.
+ 
+\end_layout
+
+\begin_layout Itemize
+dt = 1 sec and results after 5000 steps were used for comparison to the
+ analytic solutions.
+ 
+\end_layout
+
+\begin_layout Itemize
+mesh size: 31 
+\begin_inset Formula $\times$
+\end_inset
+
+ 3 
+\begin_inset Formula $\times$
+\end_inset
+
+ 31 nodes.
+ 
+\end_layout
+
+\begin_layout Itemize
+Use these files to reproduce this result: 
+\end_layout
+
+\begin_deeper
+\begin_layout Itemize
+input file: 
+\family typewriter
+tresca.xml 
+\end_layout
+
+\begin_layout Itemize
+source code: 
+\family typewriter
+libSnac/src/Stress.c
+\family default
+ to exclude Syy from calculating the second invariants.
+ 
+\end_layout
+
+\end_deeper
+\begin_layout Itemize
+The second invariant of stress in xz plane are monitored.
+ 
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float figure
+wide false
+sideways false
+status collapsed
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Graphics
+	filename /Users/sue/snac/figures/mesh-with-pbc.png
+	lyxscale 40
+	scale 40
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Caption
+
+\begin_layout Standard
+Mesh plotted with pressure boundary conditions
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Subsection
+Results
+\end_layout
+
+\begin_layout Itemize
+Relative error is about 0.8 %.
+ 
+\end_layout
+
+\begin_layout Itemize
+Use this file to get the analytic solutions: 
+\family typewriter
+thick_cylinder_tresca.py
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float figure
+wide false
+sideways false
+status collapsed
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Graphics
+	filename /Users/sue/snac/figures/2nd-invariant-stress-field.png
+	lyxscale 40
+	scale 40
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Caption
+
+\begin_layout Standard
+Second invariant of stress field 
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float figure
+wide false
+sideways false
+status collapsed
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Graphics
+	filename /Users/sue/snac/figures/2nd-invariant-profile-chart.png
+	lyxscale 40
+	scale 40
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Caption
+
+\begin_layout Standard
+Profile of the second invariant of stress along radial direction
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Section
+Benchmark Problem III 
+\end_layout
+
+\begin_layout Standard
+Problem Description: Expansion of a thick cylinder under uniform internal
+ pressure.
+ A constant and uniform internal pressure is applied to the inner surface
+ of a thick cylinder without pre-stress.
+ Taking advantage of symmetry, only a quadrant of the cylinder is modeled.
+ The outer surface has zero confining pressure.
+ Mohr-Coulomb yield criterion is used.
+\end_layout
+
+\begin_layout Subsection
+Model Setup 
+\end_layout
+
+\begin_layout Itemize
+Bulk modulus = 2.0e8 Pa 
+\end_layout
+
+\begin_layout Itemize
+Shear modulus = 2.0e8 Pa 
+\end_layout
+
+\begin_layout Itemize
+Cohesion = 1 MPa 
+\end_layout
+
+\begin_layout Itemize
+friction angle = 10 degrees
+\end_layout
+
+\begin_layout Itemize
+dilation angle = 10 degrees 
+\end_layout
+
+\begin_layout Itemize
+tension cut-off = 5.67e8 Pa 
+\end_layout
+
+\begin_layout Itemize
+Geometry of cylinder: a (inner radius) = 3.0 m, b (outer radius) = 10.0 m.
+ 
+\end_layout
+
+\begin_layout Itemize
+Boundary Conditions: P = 2.0e6 Pa at r = a, and P = 0.0 at r = b.
+ Top and bttom: Vy=0.0, free-slip.
+ 
+\end_layout
+
+\begin_layout Itemize
+dt = 1 sec and results after 5000 steps were used for comparison to the
+ analytic solutions.
+ 
+\end_layout
+
+\begin_layout Itemize
+mesh size: 31 
+\begin_inset Formula $\times$
+\end_inset
+
+ 3 
+\begin_inset Formula $\times$
+\end_inset
+
+ 31 nodes.
+ 
+\end_layout
+
+\begin_layout Itemize
+Use this file to reproduce this result: input file 
+\family typewriter
+coulomb.xml
+\family default
+ 
+\end_layout
+
+\begin_layout Itemize
+The second invariant of stress in xz plane are monitored.
+ 
+\end_layout
+
+\begin_layout Subsection
+Results 
+\end_layout
+
+\begin_layout Itemize
+Relative error is about 0.1 %.
+ 
+\end_layout
+
+\begin_layout Itemize
+Use this file to get the analytic solutions: 
+\family typewriter
+thick_cylinder_coulomb.py
+\family default
+ 
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float figure
+wide false
+sideways false
+status collapsed
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Graphics
+	filename /Users/sue/snac/figures/2nd-inv-profile-radial-direc-chart.png
+	lyxscale 40
+	scale 40
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Caption
+
+\begin_layout Standard
+Profile of the second invariant of stress along radial direction
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Relative errors for thick cylinder benchmark problem
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float table
+wide false
+sideways false
+status collapsed
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Tabular
+<lyxtabular version="3" rows="7" columns="3">
+<features>
+<column alignment="center" valignment="top" leftline="true" width="0">
+<column alignment="center" valignment="top" leftline="true" width="0">
+<column alignment="center" valignment="top" leftline="true" rightline="true" width="0">
+<row topline="true" bottomline="true">
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+Resolution
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+Mohr-Coulomb
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+Elastic
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row topline="true">
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+31 
+\begin_inset Formula $\times$
+\end_inset
+
+ 3
+\begin_inset Formula $\times$
+\end_inset
+
+ 31
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+0.14 %
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+0.31 %
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row topline="true">
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+25
+\begin_inset Formula $\times$
+\end_inset
+
+ 3
+\begin_inset Formula $\times$
+\end_inset
+
+ 25
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+0.74 %
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+0.39 %
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row topline="true">
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+21
+\begin_inset Formula $\times$
+\end_inset
+
+ 3
+\begin_inset Formula $\times$
+\end_inset
+
+ 21
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+1.05 %
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+0.52 %
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row topline="true">
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+17
+\begin_inset Formula $\times$
+\end_inset
+
+ 3
+\begin_inset Formula $\times$
+\end_inset
+
+ 17
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+1.08 %
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+0.56 %
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row topline="true">
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+13
+\begin_inset Formula $\times$
+\end_inset
+
+ 3
+\begin_inset Formula $\times$
+\end_inset
+
+ 13
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+0.88 %
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+0.59 %
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row topline="true" bottomline="true">
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+9
+\begin_inset Formula $\times$
+\end_inset
+
+ 3
+\begin_inset Formula $\times$
+\end_inset
+
+ 9
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+1.12 %
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+0.54 %
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Caption
+
+\begin_layout Standard
+Summary of Benchmarking Snac's Plastic Plugin
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Chapter
+ViscoElasticRheology (from TWiki) 
+\end_layout
+
+\begin_layout Standard
+Problem Description Parallel-Plate Viscometer (excerpted from FLAC3D manual)
+ Suppose that a material with viscosity is steadily squeezed between two
+ parallel plates that are moving at a constant velocity V0.
+ The two plates have length 2L and are a distance 2h apart.
+ The material is prevented from slipping at the plates.
+ The approximate analytical solution is given by Jaeger (1969, Elasticity,
+ Fracture and Flow, 3rd Ed.
+ New York: John Wiley & Sons, Inc.) 
+\end_layout
+
+\begin_layout Section
+Benchmark problem I 
+\end_layout
+
+\begin_layout Itemize
+Model Setup 
+\end_layout
+
+\begin_layout Itemize
+L = 10 m 
+\end_layout
+
+\begin_layout Itemize
+h = 5 m 
+\end_layout
+
+\begin_layout Itemize
+Viscosity = 1.0e9 Pa.sec 
+\end_layout
+
+\begin_layout Itemize
+Bulk modulus = 1.5e9 Pa 
+\end_layout
+
+\begin_layout Itemize
+Shear modulus = 5.0e8 Pa 
+\end_layout
+
+\begin_layout Itemize
+V0 = 1.0e-4 m/sec 
+\end_layout
+
+\begin_layout Itemize
+dt = 1 sec (results compared after 500 time steps.)
+\end_layout
+
+\begin_layout Itemize
+mesh size: 20 m 
+\begin_inset Formula $\times$
+\end_inset
+
+ 10 m 
+\begin_inset Formula $\times$
+\end_inset
+
+ 3 m, each element is a 1-m cube.
+ 
+\end_layout
+
+\begin_layout Itemize
+Due to the assumption of the original problem setup, artificial forces should
+ be added to left and right surfaces.
+\end_layout
+
+\begin_layout Itemize
+Use these files to reproduce this result: 
+\end_layout
+
+\begin_deeper
+\begin_layout Itemize
+input file: 
+\family typewriter
+maxwell_bench.xml
+\family default
+ 
+\end_layout
+
+\begin_layout Itemize
+Make sure insert this block of code into 
+\family typewriter
+libSnac/src/Force.c
+\family default
+: 
+\family typewriter
+maxwell_addforce.c 
+\end_layout
+
+\begin_layout Itemize
+To visualize the results, use this visual program: 
+\family typewriter
+maxwell_bench.net
+\end_layout
+
+\end_deeper
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float figure
+wide false
+sideways false
+status collapsed
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Graphics
+	filename /Users/sue/snac/figures/results-BM-prob-1-graph.png
+	lyxscale 60
+	scale 60
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Caption
+
+\begin_layout Standard
+NEED CAPTION -- TODO
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Subsection
+Results 
+\end_layout
+
+\begin_layout Standard
+Color field represents stress.
+ Colored arrows for Snac's velocity; black arrows for analytic solution.
+ Over the most part of the domain, two sets of arrows overlap.
+ 
+\end_layout
+
+\begin_layout Standard
+Relative error of velocity solution: ~ 5%.
+ This might be acceptable because the analytic solution is only approximate.
+ Still need to test further.
+ 
+\end_layout
+
+\begin_layout Quote
+Note: it turned out that the analytic solution given in Jaeger (1969) is
+ for viscous fluid.
+ Refining mesh won't help reduce the error.
+ 
+\end_layout
+
+\begin_layout Standard
+Stress pattern looks consistent with the analytic solution.
+ It is not easy to compare quantitatively, since SNAC prints out only the
+ 2nd invariant of stress tensor that is averaged over one element.
+ [Orig Manual Comment: TODO: Should all benchmarks be included?]
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float figure
+wide false
+sideways false
+status collapsed
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Graphics
+	filename /Users/sue/snac/figures/results-color-BM-prob-1-graph.png
+	lyxscale 45
+	scale 45
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Caption
+
+\begin_layout Standard
+NEED CAPTION -- TODO
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float figure
+wide false
+sideways false
+status collapsed
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Graphics
+	filename /Users/sue/snac/figures/results-color2-BM-prob-1-graph.png
+	lyxscale 40
+	scale 40
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Caption
+
+\begin_layout Standard
+NEED CAPTION -- TODO
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Paragraph*
+Other sections from the TWiki include
+\end_layout
+
+\begin_layout Standard
+ElastoViscoPlasticRheologyI - Introduction and benchmarking 
+\end_layout
+
+\begin_layout Standard
+ElastoViscoPlasticRheologyII - Comparison of two different yield criterion
+ 
+\end_layout
+
+\begin_layout Standard
+TemperatureSolverPlugin - design issues around the temperature solver plugin
+ 
+\end_layout
+
+\begin_layout Standard
+ReMeshing - plans & strategies for remeshing.
+ 
+\end_layout
+
+\begin_layout Standard
+ParallelBenchmarks - results of parallel runs 
+\end_layout
+
+\begin_layout Standard
+SnacCitComSCoupling - notes on the coupling with CitComS project 
+\end_layout
+
+\begin_layout Standard
+PossibleRoundOffIssue 
+\end_layout
+
+\begin_layout Standard
+GcubedPaperProblems 
+\end_layout
+
+\begin_layout Standard
+DomainDecompositionin2D 
+\end_layout
+
+\begin_layout Standard
+NaturalBCVerification
+\end_layout
+
+\begin_layout Standard
+
+\end_layout
+
+\begin_layout Chapter
+10 Parameters 
+\end_layout
+
+\begin_layout Standard
+No content was in the original manual
+\end_layout
+
+\begin_layout Chapter
+Installation and Getting Help -- TODO -- for inclusion in earlier sections
+\end_layout
+
+\begin_layout Section
+Introduction
+\end_layout
+
+\begin_layout Standard
+To install SNAC, follow the procedure that is commonly used with other open-sour
+ce software packages.
+ First, download the source package (in the form of a compressed 
+\family typewriter
+tar
+\family default
+ file) available at the 
+\begin_inset LatexCommand htmlurl
+name "Geodynamics Software Packages web page"
+target "geodynamics.org/cig/software/packages"
+
+\end_inset
+
+.
+ After unpacking the source, you run a prepackaged shell script to configure
+ SNAC for your system.
+ 
+\end_layout
+
+\begin_layout Section
+Getting Help
+\end_layout
+
+\begin_layout Standard
+For help, send e-mail to the 
+\begin_inset LatexCommand htmlurl
+name "CIG Mantle Convection Mailing List"
+target "cig-mc at geodynamics.org"
+
+\end_inset
+
+.
+ You can subscribe to the Mailing List and view archived discussion at the
+ 
+\begin_inset LatexCommand htmlurl
+name "Geodynamics Mail Lists web page"
+target "geodynamics.org/cig/lists"
+
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Section
+System Requirements
+\end_layout
+
+\begin_layout Standard
+Installation of CitcomS.py requires the following:
+\end_layout
+
+\begin_layout Itemize
+A C compiler
+\end_layout
+
+\begin_layout Itemize
+An MPI library
+\end_layout
+
+\begin_layout Itemize
+Python 2.3 or greater (Python 2.4 or greater is required on 64-bit machines),
+ including header files
+\end_layout
+
+\begin_layout Standard
+MPI installations are typically configured for a particular compiler, and
+ provide a special wrapper command to invoke the right compiler.
+ Therefore, the choice of MPI implementation often determines which C compiler
+ to use.
+\end_layout
+
+\begin_layout Quote
+
+\series bold
+Note:
+\series default
+ Users familiar with older versions of CitcomS may prefer to install only
+ the legacy CitcomS tools, 
+\family typewriter
+CitcomSFull
+\family default
+ and 
+\family typewriter
+CitcomSRegional
+\family default
+, and forgo use of Python and the Pyre framework.
+ This process requires only a C compiler and an MPI library.
+ For more information, see Section 
+\begin_inset LatexCommand ref
+reference "sec:Installing-without-Pyre"
+
+\end_inset
+
+ later in this chapter.
+\end_layout
+
+\begin_layout Standard
+If you are going to use solver coupling, you will also need a decent C++
+ compiler (e.g., g++ 3.2 or newer) and the Exchanger package; see Section 
+\begin_inset LatexCommand ref
+reference "sec:Exchanger-Configuration-(Optional)"
+
+\end_inset
+
+.
+ Optionally, CitcomS can be configured to use a parallel HDF5 library; see
+ Section 
+\begin_inset LatexCommand vref
+reference "sec:HDF5-Configuration"
+
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Subsection
+C Compiler
+\end_layout
+
+\begin_layout Standard
+On Unix or Linux systems, there is a high likelihood that a usable C compiler
+ is already installed.
+ To check, type 
+\family typewriter
+cc
+\family default
+ at the shell prompt:
+\end_layout
+
+\begin_layout LyX-Code
+$ cc
+\end_layout
+
+\begin_layout LyX-Code
+cc: no input files
+\end_layout
+
+\begin_layout LyX-Code
+$
+\end_layout
+
+\begin_layout Standard
+On Linux, if the 
+\family typewriter
+cc
+\family default
+ command is not found, install GCC using the package manager for your distributi
+on.
+\end_layout
+
+\begin_layout Standard
+The Mac OS X version of GCC is included in a software development suite
+ called Xcode.
+ Xcode is available as a free download at the 
+\begin_inset LatexCommand htmlurl
+name "Apple Developer Connection"
+target "developer.apple.com"
+
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Quote
+
+\color red
+Warning:
+\color none
+ 
+\color black
+If you are using an Intel compiler on an Itanium CPU, do not use the
+\color none
+ 
+\family typewriter
+\color black
+-O3
+\family default
+\color none
+ 
+\color black
+optimization flag as reports indicate that this optimization level will
+ generate incorrect codes.
+ For any compiler, you should always be careful about the correctness of
+ the compiled codes when using an
+\color none
+ 
+\family typewriter
+\color black
+-O3
+\family default
+\color none
+ 
+\color black
+or higher optimization level.
+\end_layout
+
+\begin_layout Subsection
+MPI Library
+\end_layout
+
+\begin_layout Standard
+CitcomS requires a library which implements the MPI standard (either version
+ 1 or 2).
+ Several free, open-source implementations of MPI are available.
+\end_layout
+
+\begin_layout Standard
+A popular choice is 
+\begin_inset LatexCommand htmlurl
+name "MPICH"
+target "www-unix.mcs.anl.gov/mpi/mpich"
+
+\end_inset
+
+.
+ Installing MPICH from source involves walking through the standard GNU
+ build procedure (
+\family typewriter
+configure && make && make install
+\family default
+).
+\end_layout
+
+\begin_layout Standard
+Linux users may have a prebuilt MPI package available for their distribution.
+ On Mac OS X, the Fink package manager offers a prepackaged version of 
+\begin_inset LatexCommand htmlurl
+name "LAM/MPI"
+target "www.lam-mpi.org"
+
+\end_inset
+
+; so if you have 
+\begin_inset LatexCommand htmlurl
+name "Fink"
+target "fink.sourceforge.net"
+
+\end_inset
+
+ installed, simply enter the following command from a Terminal window to
+ install LAM/MPI:
+\end_layout
+
+\begin_layout LyX-Code
+$ fink install lammpi lammpi-dev
+\end_layout
+
+\begin_layout Subsubsection
+MPI C Compiler Command
+\end_layout
+
+\begin_layout Standard
+Once you have an MPI library installed, make sure its C complier command
+ is on your PATH.
+ Unfortunately, the name of this command varies from one MPI implementation
+ to the next.
+ The CitcomS configuration script searches for the following MPI C command
+ names:
+\end_layout
+
+\begin_layout LyX-Code
+mpicc hcc mpcc mpcc_r mpxlc cmpicc
+\end_layout
+
+\begin_layout Subsection
+Python
+\end_layout
+
+\begin_layout Standard
+Your system may already have a suitable Python interpreter installed.
+ To check, type the 
+\family typewriter
+python
+\family default
+ command:
+\end_layout
+
+\begin_layout LyX-Code
+$ python -V
+\end_layout
+
+\begin_layout LyX-Code
+Python 2.3.4
+\end_layout
+
+\begin_layout Standard
+Mac OS X 10.3 and later ships with a suitable version of Python preinstalled.
+ If you're using an older version of Mac OS X, or for more information in
+ general, see 
+\begin_inset LatexCommand htmlurl
+name "Python on the Mac"
+target "www.python.org/download/mac"
+
+\end_inset
+
+ at the Python web site.
+\end_layout
+
+\begin_layout Standard
+On Linux, simply install the binary system package available for your distributi
+on.
+ Be sure to select the Python development package (typically called 
+\family typewriter
+python-dev
+\family default
+) in addition to the core Python package -- even if you don't plan on doing
+ any Python software development.
+ The development package contains the Python include files, which are necessary
+ for building CitcomS.
+\end_layout
+
+\begin_layout Standard
+If you are working on a cluster and 
+\family typewriter
+python
+\family default
+ is too old, try poking around a little.
+ Sometimes multiple versions of Python are installed on the same system:
+\end_layout
+
+\begin_layout LyX-Code
+$ python -V
+\end_layout
+
+\begin_layout LyX-Code
+Python 2.2.3
+\end_layout
+
+\begin_layout LyX-Code
+$ which python
+\end_layout
+
+\begin_layout LyX-Code
+/usr/bin/python
+\end_layout
+
+\begin_layout LyX-Code
+$ ls /usr/bin/python*
+\end_layout
+
+\begin_layout LyX-Code
+/usr/bin/python /usr/bin/python2 /usr/bin/python2.2
+\end_layout
+
+\begin_layout LyX-Code
+/usr/bin/python24 /usr/bin/python2.4
+\end_layout
+
+\begin_layout LyX-Code
+$
+\end_layout
+
+\begin_layout Standard
+In the above scenario, it is useful to create an alias to the newer Python:
+\end_layout
+
+\begin_layout LyX-Code
+$ cd ~/bin
+\end_layout
+
+\begin_layout LyX-Code
+$ ln -s /usr/bin/python2.4 python
+\end_layout
+
+\begin_layout LyX-Code
+$ cd
+\end_layout
+
+\begin_layout LyX-Code
+$ hash -r
+\end_layout
+
+\begin_layout LyX-Code
+$ which python
+\end_layout
+
+\begin_layout LyX-Code
+~/bin/python
+\end_layout
+
+\begin_layout LyX-Code
+$ python -V
+\end_layout
+
+\begin_layout LyX-Code
+Python 2.4.1
+\end_layout
+
+\begin_layout LyX-Code
+$
+\end_layout
+
+\begin_layout Standard
+If absolutely necessary, one can easily build Python from source using a
+ C compiler.
+ You can download Python from the 
+\begin_inset LatexCommand htmlurl
+name "Python website"
+target "www.python.org"
+
+\end_inset
+
+.
+ 
+\end_layout
+
+\begin_layout Section
+Downloading and Unpacking Source
+\end_layout
+
+\begin_layout Standard
+Download CitcomS.py from the 
+\begin_inset LatexCommand htmlurl
+name "Geodynamics website"
+target "geodynamics.org"
+
+\end_inset
+
+.
+ Click the 
+\family sans
+software
+\family default
+ tab at the top of the page.
+ Then click 
+\family sans
+Software Packages
+\family default
+, then 
+\family sans
+Mantle Convection
+\family default
+.
+ Once you click the CitcomS link, download the source archive and unpack
+ it using the 
+\family typewriter
+tar
+\family default
+ command: 
+\end_layout
+
+\begin_layout LyX-Code
+$ tar xzf CitcomS-3.0.3.tar.gz
+\end_layout
+
+\begin_layout Standard
+If you don't have GNU Tar, try the following command instead: 
+\end_layout
+
+\begin_layout LyX-Code
+$ gunzip -c CitcomS-3.0.3.tar.gz | tar xf -
+\end_layout
+
+\begin_layout Section
+Installation Procedure
+\end_layout
+
+\begin_layout Standard
+After unpacking the source, use the following procedure to install CitcomS:
+\end_layout
+
+\begin_layout Enumerate
+Navigate (i.e., 
+\family typewriter
+cd
+\family default
+) to the directory containing the CitcomS source
+\family typewriter
+.
+\newline
+
+\newline
+$ cd CitcomS-3.0.3
+\end_layout
+
+\begin_layout Enumerate
+Type .
+\family typewriter
+/configure
+\family default
+ to configure the package for your system
+\family typewriter
+.
+\newline
+
+\newline
+$ ./configure
+\end_layout
+
+\begin_layout Enumerate
+Type 
+\family typewriter
+make
+\family default
+ to build the package.
+\family typewriter
+
+\newline
+
+\newline
+$ make
+\end_layout
+
+\begin_layout Standard
+If you are content to run CitcomS from the build directory, then you are
+ done.
+ Upon successful completion, the 
+\family typewriter
+make
+\family default
+ command creates a script called 
+\family typewriter
+citcoms
+\family default
+ in the 
+\family typewriter
+bin
+\family default
+ subdirectory; this is the script you will use to run CitcomS.
+ You may wish to add the 
+\family typewriter
+bin
+\family default
+ directory to your 
+\family typewriter
+PATH
+\family default
+.
+\end_layout
+
+\begin_layout Standard
+For more details about 
+\family typewriter
+configure
+\family default
+, see Section 
+\begin_inset LatexCommand ref
+reference "sec:Configuration"
+
+\end_inset
+
+ below.
+\end_layout
+
+\begin_layout Subsection
+Installing to a Secondary Location
+\end_layout
+
+\begin_layout Standard
+Optionally, after building CitcomS, you can install it in a secondary location
+ using the 
+\family typewriter
+make install
+\family default
+ command.
+\end_layout
+
+\begin_layout Quotation
+
+\series bold
+Note:
+\series default
+ The following is not recommended if you plan on modifying the CitcomS source.
+\end_layout
+
+\begin_layout Standard
+By default, CitcomS is configured to install under 
+\family typewriter
+/usr/local
+\family default
+, which requires that you become 
+\family typewriter
+root
+\family default
+ before issuing the 
+\family typewriter
+make install
+\family default
+ command.
+\end_layout
+
+\begin_layout LyX-Code
+
+\family typewriter
+$ su
+\end_layout
+
+\begin_layout LyX-Code
+
+\family typewriter
+Password:
+\end_layout
+
+\begin_layout LyX-Code
+
+\family typewriter
+# make install
+\end_layout
+
+\begin_layout Standard
+To install as an ordinary user instead of 
+\family typewriter
+root
+\family default
+, give 
+\family typewriter
+configure
+\family default
+ the 
+\family typewriter
+--prefix
+\family default
+ option, specifying a directory to which you have write access:
+\end_layout
+
+\begin_layout LyX-Code
+$ cd CitcomS-3.0.3
+\end_layout
+
+\begin_layout LyX-Code
+$ ./configure --prefix=$HOME/cig
+\end_layout
+
+\begin_layout LyX-Code
+$ make
+\end_layout
+
+\begin_layout LyX-Code
+$ make install
+\end_layout
+
+\begin_layout Standard
+The above commands will install CitcomS under 
+\family typewriter
+$HOME/cig
+\family default
+.
+ Afterwards, you may wish to add 
+\family typewriter
+PREFIX/bin
+\family default
+ (
+\family typewriter
+$HOME/cig/bin
+\family default
+, in this example) to your 
+\family typewriter
+PATH
+\family default
+.
+\end_layout
+
+\begin_layout Standard
+After running 
+\family typewriter
+make install
+\family default
+, you may (if desired) run 
+\family typewriter
+make clean
+\family default
+ in the build directory to save disk space.
+ You are also free to delete the source/build directory altogether.
+ (Note that 
+\family typewriter
+make install
+\family default
+ installs the examples under 
+\family typewriter
+PREFIX/share/CitcomS/examples
+\family default
+.)
+\end_layout
+
+\begin_layout Section
+\begin_inset LatexCommand label
+name "sec:Configuration"
+
+\end_inset
+
+Configuration
+\end_layout
+
+\begin_layout Standard
+The 
+\family typewriter
+configure
+\family default
+ script checks for various system features.
+ As it runs, it prints messages informing you of which features it is checking
+ for.
+ Upon successful completion, it generates a 
+\family typewriter
+Makefile
+\family default
+ in each source directory of the package.
+ It also generates a 
+\family typewriter
+config.h
+\family default
+ header file, which contains system-dependent definitions.
+ 
+\end_layout
+
+\begin_layout Standard
+The 
+\family typewriter
+configure
+\family default
+ script will attempt to guess the correct values of various installation
+ parameters.
+ In the event that the default values used by 
+\family typewriter
+configure
+\family default
+ are incorrect for your system, or 
+\family typewriter
+configure
+\family default
+ is unable to guess the value of a certain parameter, you may have to specify
+ the correct value by hand.
+\end_layout
+
+\begin_layout Quote
+
+\series bold
+Important:
+\series default
+ If the 
+\family typewriter
+configure
+\family default
+ script fails, and you don't know what went wrong, examine the log file
+ 
+\family typewriter
+config.log
+\family default
+.
+ This file contains a detailed transcript of all the checks 
+\family typewriter
+configure
+\family default
+ performed.
+ More importantly, it includes the error output (if any) from your compiler.
+ When seeking help for 
+\family typewriter
+configure
+\family default
+ failures on the 
+\begin_inset LatexCommand htmlurl
+name "CIG Mantle Convection Mailing List"
+target "cig-mc at geodynamics.org"
+
+\end_inset
+
+, please send 
+\family typewriter
+config.log
+\family default
+ as an attachment.
+\end_layout
+
+\begin_layout Standard
+Upon successful completion, 
+\family typewriter
+configure
+\family default
+ will print a brief configuration summary.
+\end_layout
+
+\begin_layout Standard
+The 
+\family typewriter
+configure
+\family default
+ script will automatically check for needed Python dependencies, including
+ the Pythia package (which includes the Pyre framework).
+ If necessary, 
+\family typewriter
+configure
+\family default
+ will download missing Python packages from the Internet.
+\end_layout
+
+\begin_layout Standard
+CitcomS 3.0.1 requires Pythia v0.8.1.x, which 
+\family typewriter
+configure
+\family default
+ downloads directly from CIG.
+ (Pythia v0.8.1.x is distinct from Pythia v0.8, which you may have installed
+ previously.) Pythia v0.8.1.x is pure Python, and resides in a file or directory
+ with the extension 
+\family typewriter
+.egg
+\family default
+ (e.g., 
+\family typewriter
+pythia-0.8.1.0.egg
+\family default
+).
+ The 
+\family typewriter
+configure
+\family default
+ script may download other 
+\family typewriter
+.egg
+\family default
+ packages, in addition to Pythia, and store them under 
+\family typewriter
+\shape italic
+\emph on
+deps/
+\family default
+\shape default
+\emph default
+.
+ These are Python packages which are required (either directly or indirectly)
+ by CitcomS.py.
+\end_layout
+
+\begin_layout Subsection
+Configure Usage
+\end_layout
+
+\begin_layout Standard
+For a detailed list of 
+\family typewriter
+configure
+\family default
+ variables and options, give 
+\family typewriter
+configure
+\family default
+ the 
+\family typewriter
+--help
+\family default
+ option:
+\end_layout
+
+\begin_layout LyX-Code
+$ ./configure --help
+\end_layout
+
+\begin_layout Standard
+The following is a summary of the variables and options that are important
+ when installing CitcomS.
+ 
+\end_layout
+
+\begin_layout Subsection
+Environment Variables
+\end_layout
+
+\begin_layout Standard
+Environment variables may be specified as arguments to 
+\family typewriter
+configure
+\family default
+, e.g.,
+\end_layout
+
+\begin_layout LyX-Code
+$ ./configure CC=icc # use the Intel compiler
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float table
+placement H
+wide false
+sideways false
+status open
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Tabular
+<lyxtabular version="3" rows="5" columns="2">
+<features>
+<column alignment="center" valignment="top" leftline="true" width="1in">
+<column alignment="left" valignment="top" leftline="true" rightline="true" width="3.5in">
+<row topline="true" bottomline="true">
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+
+\series bold
+Variable
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+
+\series bold
+Description
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row topline="true">
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+PYTHON
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+Python interpreter.
+ This is useful if you have Python installed in a non-standard location,
+ e.g.,
+\end_layout
+
+\begin_layout Standard
+
+\family typewriter
+\InsetSpace ~
+\InsetSpace ~
+./configure 
+\backslash
+
+\end_layout
+
+\begin_layout Standard
+
+\family typewriter
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+PYTHON=/opt/python2.3/bin/python
+\family default
+ 
+\end_layout
+
+\begin_layout Standard
+By default, 
+\family typewriter
+configure
+\family default
+ will search for a suitable Python interpreter using your 
+\family typewriter
+PATH
+\family default
+ environment variable.
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row topline="true">
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+CC
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+C compiler command.
+ This is usually set to the name of an MPI wrapper command.
+ See Section 
+\begin_inset LatexCommand vref
+reference "sec:MPI-Configuration"
+
+\end_inset
+
+ for details and examples.
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row topline="true">
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+CPPFLAGS
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+C preprocessor flags; e.g., 
+\family typewriter
+-I<dir>
+\family default
+ if you have headers in a nonstandard directory.
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row topline="true" bottomline="true">
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+LDFLAGS
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+linker flags; e.g., 
+\family typewriter
+-L<dir>
+\family default
+ if you have libraries in a nonstandard directory.
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Subsection
+\begin_inset LatexCommand label
+name "sec:MPI-Configuration"
+
+\end_inset
+
+MPI Configuration
+\end_layout
+
+\begin_layout Standard
+By default, 
+\family typewriter
+configure
+\family default
+ will search for a C compiler using your 
+\family typewriter
+PATH
+\family default
+ environment variable.
+ It prefers MPI wrapper commands (such as 
+\family typewriter
+mpicc
+\family default
+) to ordinary compiler commands (such as 
+\family typewriter
+cc
+\family default
+ or 
+\family typewriter
+gcc
+\family default
+).
+ You may specify the compiler command name manually using the 
+\family typewriter
+CC
+\family default
+ variable:
+\end_layout
+
+\begin_layout LyX-Code
+$ ./configure CC=/opt/mpich-1.2.6/bin/mpicc
+\end_layout
+
+\begin_layout Standard
+The 
+\family typewriter
+configure
+\family default
+ script will test for the presence of the MPI header (
+\family typewriter
+mpi.h
+\family default
+) and an MPI library using the C compiler command.
+ If 
+\family typewriter
+CC
+\family default
+ is set to an MPI wrapper command such as 
+\family typewriter
+mpicc
+\family default
+, and/or the MPI header and library files are installed in a standard location
+ (i.e., 
+\family typewriter
+/usr/include
+\family default
+ and 
+\family typewriter
+/usr/lib
+\family default
+), these 
+\family typewriter
+configure
+\family default
+ tests should succeed without difficulty.
+\end_layout
+
+\begin_layout Standard
+But if CC is set to an ordinary compiler command name (e.g., 
+\family typewriter
+cc
+\family default
+ or 
+\family typewriter
+gcc
+\family default
+) and MPI is installed in a non-standard location, you must manually specify
+ 
+\family typewriter
+CPPFLAGS
+\family default
+ and 
+\family typewriter
+LDFLAGS
+\family default
+, so that the compiler can find the MPI header files and libraries.
+\end_layout
+
+\begin_layout Subsubsection
+Manually Specifying MPI 
+\family typewriter
+include
+\family default
+ and 
+\family typewriter
+lib
+\family default
+ Directories
+\end_layout
+
+\begin_layout LyX-Code
+$ ./configure 
+\backslash
+
+\end_layout
+
+\begin_layout LyX-Code
+CPPFLAGS="-I/opt/mpich-1.2.6/include" 
+\backslash
+
+\end_layout
+
+\begin_layout LyX-Code
+LDFLAGS="-L/opt/mpich-1.2.6/lib -lmpich"
+\end_layout
+
+\begin_layout Subsubsection
+Manually Specifying MPI 
+\family typewriter
+include
+\family default
+ and 
+\family typewriter
+lib
+\family default
+ Directories and an Alternative Compiler
+\end_layout
+
+\begin_layout LyX-Code
+$ ./configure 
+\backslash
+
+\end_layout
+
+\begin_layout LyX-Code
+CC=icc 
+\backslash
+
+\end_layout
+
+\begin_layout LyX-Code
+CPPFLAGS="-I/opt/mpich-1.2.6/include" 
+\backslash
+
+\end_layout
+
+\begin_layout LyX-Code
+LDFLAGS="-L/opt/mpich-1.2.6/lib -lmpich"
+\end_layout
+
+\begin_layout Standard
+Note that it may be necessary to specify the name of the MPI library itself
+ in 
+\family typewriter
+LDFLAGS
+\family default
+ using the 
+\family typewriter
+-l
+\family default
+ compiler option.
+ If a library name is not given -- or if the given option doesn't work --
+ 
+\family typewriter
+configure
+\family default
+ will automatically try linking using 
+\family typewriter
+-lmpi
+\family default
+ and, if that fails, 
+\family typewriter
+-lmpich
+\family default
+.
+\end_layout
+
+\begin_layout Section
+\begin_inset LatexCommand label
+name "sec:Exchanger-Configuration-(Optional)"
+
+\end_inset
+
+Exchanger Configuration (Optional)
+\end_layout
+
+\begin_layout Standard
+This version of CitcomS is capable of solver coupling.
+ Two or more instances of CitcomS solvers can be coupled together to solve
+ a problem with different length and time scales 
+\begin_inset LatexCommand cite
+key "Tan et al GeoFramework Part I"
+
+\end_inset
+
+.
+ An external Exchanger package is needed for solver coupling.
+ You can download Exchanger at 
+\begin_inset LatexCommand htmlurl
+name "CIG's Exchanger web page"
+target "geodynamics.org/cig/software/packages/cs/exchanger"
+
+\end_inset
+
+.
+ After you download and untar the package, you can configure and install
+ Exchanger using these commands:
+\end_layout
+
+\begin_layout LyX-Code
+$ cd Exchanger-1.0.0/
+\end_layout
+
+\begin_layout LyX-Code
+$ ./configure --prefix=$HOME/cig
+\end_layout
+
+\begin_layout LyX-Code
+$ make
+\end_layout
+
+\begin_layout LyX-Code
+$ make install
+\end_layout
+
+\begin_layout Standard
+By default, CitcomS will attempt to auto-detect your Exchanger installation
+ and will disable Exchanger support if it is not found.
+ You may specify the location of your Exchanger installation by setting
+ the PYTHONPATH environment variable to the appropriate installation prefix.
+\end_layout
+
+\begin_layout LyX-Code
+$ cd CitcomS-3.0.3/
+\end_layout
+
+\begin_layout LyX-Code
+$ export PYTHONPATH=$HOME/cig/lib/python2.3/site-packages:$PYTHONPATH
+\end_layout
+
+\begin_layout LyX-Code
+$ ./configure --with-exchanger
+\end_layout
+
+\begin_layout Section
+\begin_inset LatexCommand label
+name "sec:HDF5-Configuration"
+
+\end_inset
+
+HDF5 Configuration (Optional)
+\end_layout
+
+\begin_layout Standard
+For writing its output in binary format, CitcomS requires parallel HDF5
+ (PHDF5).
+ In turn, PHDF5 requires an MPI compiler with MPI-IO support and a parallel
+ file system.
+ If an existing installation of the PHDF5 library is not available on your
+ cluster, you can compile it from source by following the instructions in
+ the file 
+\family typewriter
+\size small
+release_docs/INSTALL_parallel
+\family default
+\size default
+ under the HDF5 source tree.
+ Under Debian Linux, you may simply install the 
+\family typewriter
+libhdf5-mpich
+\family default
+, 
+\family typewriter
+libhdf5-mpich-dev
+\family default
+ and 
+\family typewriter
+hdf5-tools
+\family default
+ packages.
+\end_layout
+
+\begin_layout Standard
+By default, CitcomS will attempt to auto-detect your PHDF5 installation,
+ and will disable HDF5 support if it is not found.
+ You may specify the location of your PHDF5 installation by setting the
+ PHDF5_HOME environment variable to the appropriate installation prefix.
+\end_layout
+
+\begin_layout LyX-Code
+$ export PHDF5_HOME=/opt/phdf5/1.6.5
+\end_layout
+
+\begin_layout LyX-Code
+$ ./configure --with-hdf5
+\end_layout
+
+\begin_layout Subsection
+Additional Tools
+\end_layout
+
+\begin_layout Standard
+While the following software is not necessary for the normal operation of
+ CitcomS, you may find it useful for accessing CitcomS data in HDF5 files.
+\end_layout
+
+\begin_layout Subsubsection
+NumPy
+\end_layout
+
+\begin_layout Standard
+NumPy is an extension to Python which adds support for multi-dimensional
+ arrays for use in scientific computing.
+ You may download NumPy from the 
+\begin_inset LatexCommand htmlurl
+name "NumPy home page"
+target "numpy.scipy.org"
+
+\end_inset
+
+.
+ To compile and install this extension, download it and issue the following
+ commands after extracting it:
+\end_layout
+
+\begin_layout LyX-Code
+$ cd numpy-1.0
+\end_layout
+
+\begin_layout LyX-Code
+$ python setup.py install --prefix=$HOME/cig
+\end_layout
+
+\begin_layout Standard
+Alternatively, under Debian Linux you can install the 
+\family typewriter
+python-numpy
+\family default
+ package.
+ On Gentoo Linux, NumPy is available in the 
+\family typewriter
+dev-python/numpy
+\family default
+ ebuild.
+\end_layout
+
+\begin_layout Subsubsection
+\begin_inset LatexCommand label
+name "sub:PyTables"
+
+\end_inset
+
+PyTables
+\end_layout
+
+\begin_layout Standard
+PyTables is an extension to Python and can expose HDF5 array datasets as
+ Python NumPy arrays.
+ It is available at 
+\begin_inset LatexCommand htmlurl
+name "PyTables"
+target "www.pytables.org"
+
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Standard
+To compile and install this extension, download the latest stable version
+ and issue the following commands:
+\end_layout
+
+\begin_layout LyX-Code
+$ cd pytables-1.3.3
+\end_layout
+
+\begin_layout LyX-Code
+$ python setup.py install --prefix=$HOME/cig
+\end_layout
+
+\begin_layout Standard
+To install on Debian Linux, you may use the 
+\family typewriter
+python-tables
+\family default
+ package instead.
+ On Gentoo Linux, it is available in the 
+\family typewriter
+dev-python/pytables
+\family default
+ ebuild.
+\end_layout
+
+\begin_layout Subsubsection
+HDFView
+\end_layout
+
+\begin_layout Standard
+HDFView is a visual tool written in Java for browsing and editing HDF5 files.
+ You may download it from the 
+\begin_inset LatexCommand htmlurl
+name "HDFView home page"
+target "hdf.ncsa.uiuc.edu/hdf-java-html/hdfview"
+
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Subsubsection
+\begin_inset LatexCommand label
+name "sub:OpenDXutils"
+
+\end_inset
+
+OpenDXutils
+\end_layout
+
+\begin_layout Standard
+In order to import HDF5 files into OpenDX, you need the OpenDXutils package
+ from the Cactus project.
+ Go to the 
+\begin_inset LatexCommand url
+name "OpenDXutils package website"
+target "www.cactuscode.org/Visualization/openDX"
+
+\end_inset
+
+ and follow the instructions to download and install the package.
+ Note that you will need to set both 
+\family typewriter
+DXMODULES
+\family default
+ and 
+\family typewriter
+DXMDF
+\family default
+ environment variables before running OpenDX to load the package.
+\end_layout
+
+\begin_layout Section
+\begin_inset LatexCommand label
+name "sec:Batch-System-Configuration"
+
+\end_inset
+
+Batch System Configuration
+\end_layout
+
+\begin_layout Standard
+If you are installing CitcomS on a cluster with a batch system, you can
+ configure Pyre such that the 
+\family typewriter
+citcoms
+\family default
+ command automatically submits jobs to the batch queue.
+ Pyre contains support for the LSF, PBS, and Globus batch systems.
+\end_layout
+
+\begin_layout Standard
+The command to submit a batch job depends upon the particular batch system
+ used.
+ Further, the command used in a batch script to launch an MPI program varies
+ from one cluster to the next.
+ This command can vary between two clusters, even if the clusters use the
+ same batch system! On some systems, 
+\family typewriter
+mpirun
+\family default
+ is invoked directly from the batch script.
+ On others, a special wrapper is used instead.
+\end_layout
+
+\begin_layout Standard
+Properly configured, Pyre can handle job submissions automatically, insulating
+ users from the details of the batch system and the site configuration.
+ This feature has the most value when the system administrator installs
+ a global Pyre configuration file on the cluster (under 
+\family typewriter
+/etc/pythia-0.8
+\family default
+), for the benefit of all users and all Pyre-based applications.
+\end_layout
+
+\begin_layout Standard
+For more information on configuring Pyre for your batch system, see CIG's
+ 
+\begin_inset LatexCommand htmlurl
+name "Pythia page"
+target "geodynamics.org/cig/software/packages/cs/pythia"
+
+\end_inset
+
+.
+ For more information on batch system configuration as it pertains to running
+ CitcomS, see Section 
+\begin_inset LatexCommand vref
+reference "sub:Launchers-and-Schedulers"
+
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Section
+\begin_inset LatexCommand label
+name "sec:Installing-without-Pyre"
+
+\end_inset
+
+Installing without Pyre
+\end_layout
+
+\begin_layout Standard
+To build just the CitcomS tools (or ``drivers'') from the legacy C code,
+ give 
+\family typewriter
+configure
+\family default
+ the 
+\family typewriter
+--without-pyre
+\family default
+ option:
+\end_layout
+
+\begin_layout LyX-Code
+$ ./configure --without-pyre
+\end_layout
+
+\begin_layout Standard
+The only system requirements for this configuration are an MPI library and
+ a C compiler.
+ The 
+\family typewriter
+make
+\family default
+ command will build two command-line tools, 
+\family typewriter
+CitcomSFull
+\family default
+ and 
+\family typewriter
+CitcomSRegional
+\family default
+, for running the full solver and the regional solver, respectively.
+\end_layout
+
+\begin_layout Section
+\begin_inset LatexCommand label
+name "sec:Software-Repository"
+
+\end_inset
+
+Installing from the Software Repository
+\end_layout
+
+\begin_layout Standard
+The CitcomS source code is available via a Subversion server at the 
+\begin_inset LatexCommand htmlurl
+name "Geodynamics website"
+target "geodynamics.org"
+
+\end_inset
+
+.
+ This allows users to view the revision history of the code and check out
+ the most recent development version of the software.
+\end_layout
+
+\begin_layout Quote
+
+\series bold
+NOTE:
+\series default
+ If you are content with the prepared source package, you may skip this
+ section.
+\end_layout
+
+\begin_layout Subsection
+Tools You Will Need
+\end_layout
+
+\begin_layout Standard
+In addition to the usual system requirements, you will need a handful of
+ additional development tools installed in order to work with the source
+ from the CIG software repository.
+\end_layout
+
+\begin_layout Standard
+First, you must have a Subversion client installed.
+ To check, type 
+\family typewriter
+svn
+\family default
+; it should return a usage message.
+\end_layout
+
+\begin_layout LyX-Code
+$ svn
+\end_layout
+
+\begin_layout LyX-Code
+Type 'svn help' for usage.
+\end_layout
+
+\begin_layout Standard
+For more information on Subversion, visit the 
+\begin_inset LatexCommand htmlurl
+name "Subversion website"
+target "subversion.tigris.org"
+
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Standard
+Second, you must have the GNU tools Autoconf, Automake, and Libtool installed.
+ To check, enter the following commands:
+\end_layout
+
+\begin_layout LyX-Code
+$ autoconf --version
+\end_layout
+
+\begin_layout LyX-Code
+$ automake --version
+\end_layout
+
+\begin_layout LyX-Code
+$ libtoolize --version
+\end_layout
+
+\begin_layout Standard
+For more information about these GNU tools, see the 
+\begin_inset LatexCommand htmlurl
+name "GNU website"
+target "www.gnu.org/software"
+
+\end_inset
+
+.
+ The CitcomS v3.0.3 source package was created with Autoconf 2.59, Automake
+ 1.9.2, and Libtool 1.5.6.
+\end_layout
+
+\begin_layout Subsection
+Download Source from Subversion
+\end_layout
+
+\begin_layout Standard
+To check out the latest version of the software, use the 
+\family typewriter
+svn checkout
+\family default
+ command:
+\end_layout
+
+\begin_layout LyX-Code
+$ svn checkout http://geodynamics.org/svn/cig/mc/3D/CitcomS/trunk CitcomS
+\end_layout
+
+\begin_layout Standard
+This will create the local directory 
+\family typewriter
+CitcomS
+\family default
+ (if it doesn't already exist) and fill it with the latest CitcomS source
+ from the CIG software repository.
+\end_layout
+
+\begin_layout Standard
+The 
+\family typewriter
+CitcomS
+\family default
+ directory thus created is called a 
+\emph on
+working copy
+\emph default
+.
+ To merge the latest changes into an existing working copy, use the 
+\family typewriter
+svn update
+\family default
+ command:
+\end_layout
+
+\begin_layout LyX-Code
+$ cd CitcomS
+\end_layout
+
+\begin_layout LyX-Code
+$ svn update
+\end_layout
+
+\begin_layout Standard
+This will preserve any local changes you have made to your working copy.
+\end_layout
+
+\begin_layout Chapter
+\begin_inset LatexCommand label
+name "cha:License"
+
+\end_inset
+
+License 
+\end_layout
+
+\begin_layout Standard
+
+\series bold
+GNU GENERAL PUBLIC LICENSE Version 2, June 1991.
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+\series default
+ 
+\newline
+
+\series medium
+Everyone is permitted to copy and distribute verbatim copies of this license
+ document, but changing it is not allowed.
+\end_layout
+
+\begin_layout Section*
+Preamble
+\end_layout
+
+\begin_layout Standard
+The licenses for most software are designed to take away your freedom to
+ share and change it.
+ By contrast, the GNU General Public License is intended to guarantee your
+ freedom to share and change free software -- to make sure the software
+ is free for all its users.
+ This General Public License applies to most of the Free Software Foundation's
+ software and to any other program whose authors commit to using it.
+ (Some other Free Software Foundation software is covered by the GNU Library
+ General Public License instead.) You can apply it to your programs, too.
+\end_layout
+
+\begin_layout Standard
+When we speak of free software, we are referring to freedom, not price.
+ Our General Public Licenses are designed to make sure that you have the
+ freedom to distribute copies of free software (and charge for this service
+ if you wish), that you receive source code or can get it if you want it,
+ that you can change the software or use pieces of it in new free programs;
+ and that you know you can do these things.
+\end_layout
+
+\begin_layout Standard
+To protect your rights, we need to make restrictions that forbid anyone
+ to deny you these rights or to ask you to surrender the rights.
+ These restrictions translate to certain responsibilities for you if you
+ distribute copies of the software, or if you modify it.
+\end_layout
+
+\begin_layout Standard
+For example, if you distribute copies of such a program, whether gratis
+ or for a fee, you must give the recipients all the rights that you have.
+ You must make sure that they, too, receive or can get the source code.
+ And you must show them these terms so they know their rights.
+\end_layout
+
+\begin_layout Standard
+We protect your rights with two steps:
+\end_layout
+
+\begin_layout Enumerate
+Copyright the software, and 
+\end_layout
+
+\begin_layout Enumerate
+Offer you this license which gives you legal permission to copy, distribute
+ and/or modify the software.
+\end_layout
+
+\begin_layout Standard
+Also, for each author's protection and ours, we want to make certain that
+ everyone understands that there is no warranty for this free software.
+ If the software is modified by someone else and passed on, we want its
+ recipients to know that what they have is not the original, so that any
+ problems introduced by others will not reflect on the original authors'
+ reputations.
+\end_layout
+
+\begin_layout Standard
+Finally, any free program is threatened constantly by software patents.
+ We wish to avoid the danger that redistributors of a free program will
+ individually obtain patent licenses, in effect making the program proprietary.
+ To prevent this, we have made it clear that any patent must be licensed
+ for everyone's free use or not licensed at all.
+ 
+\end_layout
+
+\begin_layout Standard
+The precise terms and conditions for copying, distribution and modification
+ follow.
+\end_layout
+
+\begin_layout Section*
+GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION
+ AND MODIFICATION 
+\end_layout
+
+\begin_layout Standard
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+begin{itemize}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+item[0.]
+\end_layout
+
+\end_inset
+
+This License applies to any program or other work which contains a notice
+ placed by the copyright holder saying it may be distributed under the terms
+ of this General Public License.
+ The ``Program'' below refers to any such program or work, and a ``work
+ based on the Program'' means either the Program or any derivative work
+ under copyright law: that is to say, a work containing the Program or a
+ portion of it, either verbatim or with modifications and/or translated
+ into another language.
+ (Hereinafter, translation is included without limitation in the term ``modifica
+tion.'') Each licensee is addressed as ``you.''
+\newline
+
+\newline
+Activities other than copying,
+ distribution and modification are not covered by this License; they are
+ outside its scope.
+ The act of running the Program is not restricted, and the output from the
+ Program is covered only if its contents constitute a work based on the
+ Program (independent of having been made by running the Program).
+ Whether that is true depends on what the Program does.
+ 
+\end_layout
+
+\begin_layout Standard
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+end{itemize}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Enumerate
+You may copy and distribute verbatim copies of the Program's source code
+ as you receive it, in any medium, provided that you conspicuously and appropria
+tely publish on each copy an appropriate copyright notice and disclaimer
+ of warranty; keep intact all the notices that refer to this License and
+ to the absence of any warranty; and give any other recipients of the Program
+ a copy of this License along with the Program.
+ 
+\end_layout
+
+\begin_deeper
+\begin_layout Standard
+You may charge a fee for the physical act of transferring a copy, and you
+ may at your option offer warranty protection in exchange for a fee.
+ 
+\end_layout
+
+\end_deeper
+\begin_layout Enumerate
+You may modify your copy or copies of the Program or any portion of it,
+ thus forming a work based on the Program, and copy and distribute such
+ modifications or work under the terms of Section 1 above, provided that
+ you also meet all of these conditions: 
+\end_layout
+
+\begin_deeper
+\begin_layout Enumerate
+You must cause the modified files to carry prominent notices stating that
+ you changed the files and the date of any change.
+ 
+\end_layout
+
+\begin_layout Enumerate
+You must cause any work that you distribute or publish, that in whole or
+ in part contains or is derived from the Program or any part thereof, to
+ be licensed as a whole at no charge to all third parties under the terms
+ of this License.
+ 
+\end_layout
+
+\begin_layout Enumerate
+If the modified program normally reads commands interactively when run,
+ you must cause it, when started running for such interactive use in the
+ most ordinary way, to print or display an announcement including an appropriate
+ copyright notice and a notice that there is no warranty (or else, saying
+ that you provide a warranty) and that users may redistribute the program
+ under these conditions, and telling the user how to view a copy of this
+ License.
+ (Exception: if the Program itself is interactive but does not normally
+ print such an announcement, your work based on the Program is not required
+ to print an announcement.) 
+\end_layout
+
+\begin_layout Standard
+These requirements apply to the modified work as a whole.
+ If identifiable sections of that work are not derived from the Program,
+ and can be reasonably considered independent and separate works in themselves,
+ then this License, and its terms, do not apply to those sections when you
+ distribute them as separate works.
+ But when you distribute the same sections as part of a whole which is a
+ work based on the Program, the distribution of the whole must be on the
+ terms of this License, whose permissions for other licensees extend to
+ the entire whole, and thus to each and every part regardless of who wrote
+ it.
+ 
+\end_layout
+
+\begin_layout Standard
+Thus, it is not the intent of this section to claim rights or contest your
+ rights to work written entirely by you; rather, the intent is to exercise
+ the right to control the distribution of derivative or collective works
+ based on the Program.
+ 
+\end_layout
+
+\begin_layout Standard
+In addition, mere aggregation of another work not based on the Program with
+ the Program (or with a work based on the Program) on a volume of a storage
+ or distribution medium does not bring the other work under the scope of
+ this License.
+ 
+\end_layout
+
+\end_deeper
+\begin_layout Enumerate
+You may copy and distribute the Program (or a work based on it, under Section
+ 2) in object code or executable form under the terms of Sections 1 and
+ 2 above provided that you also do one of the following: 
+\end_layout
+
+\begin_deeper
+\begin_layout Enumerate
+Accompany it with the complete corresponding machine-readable source code,
+ which must be distributed under the terms of Sections 1 and 2 above on
+ a medium customarily used for software interchange; or, 
+\end_layout
+
+\begin_layout Enumerate
+Accompany it with a written offer, valid for at least three years, to give
+ any third party, for a charge no more than your cost of physically performing
+ source distribution, a complete machine-readable copy of the corresponding
+ source code, to be distributed under the terms of Sections 1 and 2 above
+ on a medium customarily used for software interchange; or, 
+\end_layout
+
+\begin_layout Enumerate
+Accompany it with the information you received as to the offer to distribute
+ corresponding source code.
+ (This alternative is allowed only for noncommercial distribution and only
+ if you received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.) 
+\end_layout
+
+\begin_layout Standard
+The source code for a work means the preferred form of the work for making
+ modifications to it.
+ For an executable work, complete source code means all the source code
+ for all modules it contains, plus any associated interface definition files,
+ plus the scripts used to control compilation and installation of the executable.
+ However, as a special exception, the source code distributed need not include
+ anything that is normally distributed (in either source or binary form)
+ with the major components (compiler, kernel, and so on) of the operating
+ system on which the executable runs, unless that component itself accompanies
+ the executable.
+\end_layout
+
+\begin_layout Standard
+If distribution of executable or object code is made by offering access
+ to copy from a designated place, then offering equivalent access to copy
+ the source code from the same place counts as distribution of the source
+ code, even though third parties are not compelled to copy the source along
+ with the object code.
+ 
+\end_layout
+
+\end_deeper
+\begin_layout Enumerate
+You may not copy, modify, sublicense, or distribute the Program except as
+ expressly provided under this License.
+ Any attempt otherwise to copy, modify, sublicense or distribute the Program
+ is void, and will automatically terminate your rights under this License.
+ However, parties who have received copies, or rights, from you under this
+ License will not have their licenses terminated so long as such parties
+ remain in full compliance.
+ 
+\end_layout
+
+\begin_layout Enumerate
+You are not required to accept this License, since you have not signed it.
+ However, nothing else grants you permission to modify or distribute the
+ Program or its derivative works.
+ These actions are prohibited by law if you do not accept this License.
+ Therefore, by modifying or distributing the Program (or any work based
+ on the Program), you indicate your acceptance of this License to do so,
+ and all its terms and conditions for copying, distributing or modifying
+ the Program or works based on it.
+ 
+\end_layout
+
+\begin_layout Enumerate
+Each time you redistribute the Program (or any work based on the Program),
+ the recipient automatically receives a license from the original licensor
+ to copy, distribute or modify the Program subject to these terms and conditions.
+ You may not impose any further restrictions on the recipients' exercise
+ of the rights granted herein.
+ You are not responsible for enforcing compliance by third parties to this
+ License.
+ 
+\end_layout
+
+\begin_layout Enumerate
+If, as a consequence of a court judgment or allegation of patent infringement
+ or for any other reason (not limited to patent issues), conditions are
+ imposed on you (whether by court order, agreement or otherwise) that contradict
+ the conditions of this License, they do not excuse you from the conditions
+ of this License.
+ If you cannot distribute so as to satisfy simultaneously your obligations
+ under this License and any other pertinent obligations, then as a consequence
+ you may not distribute the Program at all.
+ For example, if a patent license would not permit royalty-free redistribution
+ of the Program by all those who receive copies directly or indirectly through
+ you, then the only way you could satisfy both it and this License would
+ be to refrain entirely from distribution of the Program.
+\end_layout
+
+\begin_deeper
+\begin_layout Standard
+If any portion of this section is held invalid or unenforceable under any
+ particular circumstance, the balance of the section is intended to apply
+ and the section as a whole is intended to apply in other circumstances.
+\end_layout
+
+\begin_layout Standard
+It is not the purpose of this section to induce you to infringe any patents
+ or other property right claims or to contest validity of any such claims;
+ this section has the sole purpose of protecting the integrity of the free
+ software distribution system, which is implemented by public license practices.
+ Many people have made generous contributions to the wide range of software
+ distributed through that system in reliance on consistent application of
+ that system; it is up to the author/donor to decide if he or she is willing
+ to distribute software through any other system and a licensee cannot impose
+ that choice.
+ 
+\end_layout
+
+\begin_layout Standard
+This section is intended to make thoroughly clear what is believed to be
+ a consequence of the rest of this License.
+ 
+\end_layout
+
+\end_deeper
+\begin_layout Enumerate
+If the distribution and/or use of the Program is restricted in certain countries
+ either by patents or by copyrighted interfaces, the original copyright
+ holder who places the Program under this License may add an explicit geographic
+al distribution limitation excluding those countries, so that distribution
+ is permitted only in or among countries not thus excluded.
+ In such case, this License incorporates the limitation as if written in
+ the body of this License.
+ 
+\end_layout
+
+\begin_layout Enumerate
+The Free Software Foundation may publish revised and/or new versions of
+ the General Public License from time to time.
+ Such new versions will be similar in spirit to the present version, but
+ may differ in detail to address new problems or concerns.
+ 
+\end_layout
+
+\begin_deeper
+\begin_layout Standard
+Each version is given a distinguishing version number.
+ If the Program specifies a version number of this License which applies
+ to it and ``any later version,'' you have the option of following the terms
+ and conditions either of that version or of any later version published
+ by the Free Software Foundation.
+ If the Program does not specify a version number of this License, you may
+ choose any version ever published by the Free Software Foundation.
+\end_layout
+
+\end_deeper
+\begin_layout Enumerate
+If you wish to incorporate parts of the Program into other free programs
+ whose distribution conditions are different, write to the author to ask
+ for permission.
+ For software which is copyrighted by the Free Software Foundation, write
+ to the Free Software Foundation; we sometimes make exceptions for this.
+ Our decision will be guided by the two goals of preserving the free status
+ of all derivatives of our free software and of promoting the sharing and
+ reuse of software generally.
+ 
+\end_layout
+
+\begin_layout Subsection*
+NO WARRANTY 
+\end_layout
+
+\begin_layout Standard
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+begin{itemize}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+item[11.]
+\end_layout
+
+\end_inset
+
+BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
+ THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+ EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER
+ PARTIES PROVIDE THE PROGRAM ``AS IS'' WITHOUT WARRANTY OF ANY KIND, EITHER
+ EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH
+ YOU.
+ SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY
+ SERVICING, REPAIR OR CORRECTION.
+ 
+\end_layout
+
+\begin_layout Standard
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+item[12.]
+\end_layout
+
+\end_inset
+
+IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL
+ ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE
+ THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING
+ ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF
+ THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS
+ OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR
+ THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+ EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY
+ OF SUCH DAMAGES.
+\end_layout
+
+\begin_layout Standard
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+end{itemize}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Section*
+END OF TERMS AND CONDITIONS 
+\end_layout
+
+\begin_layout Subsection*
+How to Apply These Terms to Your New Programs
+\end_layout
+
+\begin_layout Standard
+If you develop a new program, and you want it to be of the greatest possible
+ use to the public, the best way to achieve this is to make it free software
+ which everyone can redistribute and change under these terms.
+ 
+\end_layout
+
+\begin_layout Standard
+To do so, attach the following notices to the program.
+ It is safest to attach them to the start of each source file to most effectivel
+y convey the exclusion of warranty; and each file should have at least the
+ ``copyright'' line and a pointer to where the full notice is found.
+ For example:
+\end_layout
+
+\begin_layout Quote
+One line to give the program's name and a brief idea of what it does.
+ Copyright 
+\size footnotesize
+© (
+\size default
+year) (name of author) 
+\end_layout
+
+\begin_layout Quote
+This program is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by the Free
+ Software Foundation; either version 2 of the License, or (at your option)
+ any later version.
+ 
+\end_layout
+
+\begin_layout Quote
+This program is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE.
+ See the GNU General Public License for more details.
+ 
+\end_layout
+
+\begin_layout Quote
+You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 
+\end_layout
+
+\begin_layout Standard
+Also add information on how to contact you by electronic and paper mail.
+ 
+\end_layout
+
+\begin_layout Standard
+If the program is interactive, make it output a short notice like this when
+ it starts in an interactive mode: 
+\end_layout
+
+\begin_layout Quote
+Gnomovision version 69, Copyright © year name of author Gnomovision comes
+ with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it under certain
+ conditions; type `show c' for details.
+ 
+\end_layout
+
+\begin_layout Standard
+The hypothetical commands `show w' and `show c' should show the appropriate
+ parts of the General Public License.
+ Of course, the commands you use may be called something other than `show
+ w' and `show c'; they could even be mouse-clicks or menu items -- whatever
+ suits your program.
+ 
+\end_layout
+
+\begin_layout Standard
+You should also get your employer (if you work as a programmer) or your
+ school, if any, to sign a ``copyright disclaimer'' for the program, if
+ necessary.
+ Here is a sample; alter the names: 
+\end_layout
+
+\begin_layout Quote
+Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovisi
+on' (which makes passes at compilers) written by James Hacker.
+ 
+\end_layout
+
+\begin_layout Quote
+(signature of Ty Coon)
+\newline
+1 April 1989 
+\newline
+Ty Coon, President of Vice 
+\end_layout
+
+\begin_layout Standard
+This General Public License does not permit incorporating your program into
+ proprietary programs.
+ If your program is a subroutine library, you may consider it more useful
+ to permit linking proprietary applications with the library.
+ If this is what you want to do, use the GNU Library General Public License
+ instead of this License.
+\end_layout
+
+\begin_layout Bibliography
+\begin_inset LatexCommand bibitem
+label "1"
+key "Moresi et al 2000"
+
+\end_inset
+
+Moresi, L., Gurnis, M., and Zhong, S.
+ Plate tectonics and convection in the Earth's mantle: Toward a numerical
+ simulation.
+
+\emph on
+ Comp.
+ Sci.
+ Engin.
+ 2,
+\emph default
+ 22-33 (2000).
+ 
+\end_layout
+
+\begin_layout Bibliography
+\begin_inset LatexCommand bibitem
+label "2"
+key "Moresi Solomatov 1995"
+
+\end_inset
+
+Moresi, L.N., and Solomatov, V.S.
+ Numerical investigation of 2D convection with extremely large viscosity
+ variations.
+ 
+\emph on
+Phys.
+ Fluid 7, 
+\emph default
+2154-2162 (1995).
+\end_layout
+
+\begin_layout Bibliography
+\begin_inset LatexCommand bibitem
+label "3"
+key "Moresi Gurnis 1996"
+
+\end_inset
+
+Moresi, L.N., and Gurnis, M.
+ Constraints on the lateral strength of slabs from three-dimensional dynamic
+ flow models.
+
+\emph on
+ Earth Planet.
+ Sci.
+ Lett.
+ 138, 
+\emph default
+15-28 (1996).
+ 
+\end_layout
+
+\begin_layout Bibliography
+\begin_inset LatexCommand bibitem
+label "4"
+key "Zhong et al 1998"
+
+\end_inset
+
+Zhong, S., Gurnis, M., and Moresi, L.
+ The role of faults, nonlinear rheology, and viscosity structure in generating
+ plates from instantaneous mantle flow models.
+ 
+\emph on
+J.
+ Geophys.
+ Res.
+ 103,
+\emph default
+ 15,255-15,268 (1998).
+ 
+\end_layout
+
+\begin_layout Bibliography
+\begin_inset LatexCommand bibitem
+label "5"
+key "Zhong et al 2000"
+
+\end_inset
+
+Zhong, S., Zuber, M.T., Moresi, L.N., and Gurnis, M.
+ The role of temperature-dependent viscosity and surface plates in spherical
+ shell models of mantle convection.
+
+\emph on
+ J.
+ Geophys.
+ Res.
+ 105, 
+\emph default
+11,063-11,082 (2000).
+ 
+\end_layout
+
+\begin_layout Bibliography
+\begin_inset LatexCommand bibitem
+label "6"
+key "Tan et al 2002"
+
+\end_inset
+
+Tan, E., Gurnis, M., and Han, L.
+ Slabs in the lower mantle and their modulation of plume formation.
+ 
+\emph on
+Geochem.
+ Geophys.
+ Geosyst.
+ 3,
+\emph default
+ 1067 (2002).
+ 
+\end_layout
+
+\begin_layout Bibliography
+\begin_inset LatexCommand bibitem
+label "7"
+key "Conrad Gurnis 2001"
+
+\end_inset
+
+Conrad, C.P., and Gurnis, M.
+ Seismic tomography, surface uplift, and the breakup of Gondwanaland: Integratin
+g mantle convection backwards in time.
+ Geochem., Geophys., Geosys.
+ (2001).
+ 
+\end_layout
+
+\begin_layout Bibliography
+\begin_inset LatexCommand bibitem
+label "8"
+key "Hughes 1987"
+
+\end_inset
+
+Hughes, T.
+ J.
+ R.
+ The Finite Element Method: Linear Static and Dynamic Finite Element Analysis
+ (Prentice-Hall, Inc., Englewood Cliffs, New Jersey, 1987).
+ 
+\end_layout
+
+\begin_layout Bibliography
+\begin_inset LatexCommand bibitem
+label "9"
+key "Ramage Wathen 1994"
+
+\end_inset
+
+Ramage, A.
+ & Wathen, A.
+ J.
+ Iterative solution techniques for the Stokes and Navier-Stokes equations.
+ Int.
+ J.
+ Numer.
+ Methods.
+ Fluids 19, 67-83 (1994).
+ 
+\end_layout
+
+\begin_layout Bibliography
+\begin_inset LatexCommand bibitem
+label "10"
+key "Brooks 1981"
+
+\end_inset
+
+Brooks, A.N., TODO: TITLE (California Institute of Technology, Pasadena, CA,
+ 1981).
+ 
+\end_layout
+
+\begin_layout Bibliography
+\begin_inset LatexCommand bibitem
+label "11"
+key "Cahoet Chabard 1988"
+
+\end_inset
+
+Cahouet, J.
+ & Chabard, J.-P.
+ Some fast 3D finite element solvers for the generalized Stokes problem.
+ Int.
+ J.
+ Numer.
+ Methods.
+ Fluids 8, 869-895 (1988).
+ 
+\end_layout
+
+\begin_layout Bibliography
+\begin_inset LatexCommand bibitem
+label "12"
+key "Atanga Silvester 1992"
+
+\end_inset
+
+Atanga, J.
+ & Silvester, D.
+ Iterative methods for stabilized mixed velocity-pressure finite elements.
+ Int.
+ J.
+ Numer.
+ Methods.
+ Fluids 14, 71-81 (1992).
+ 
+\end_layout
+
+\begin_layout Bibliography
+\begin_inset LatexCommand bibitem
+label "13"
+key "Hager OConnell 1981"
+
+\end_inset
+
+Hager, B.
+ H.
+ & O'Connell, R.
+ J.
+ A simple global model of plate dynamics and mantle convection.
+ J.
+ Geophys.
+ Res.
+ 86, 4843-4867 (1981).
+\end_layout
+
+\begin_layout Bibliography
+\begin_inset LatexCommand bibitem
+key "key-13"
+
+\end_inset
+
+MARTI AND CUNDALL 1982 -- TODO
+\end_layout
+
+\begin_layout Bibliography
+\begin_inset LatexCommand bibitem
+key "key-14"
+
+\end_inset
+
+CUNDALL 1989 -- TODO
+\end_layout
+
+\begin_layout Bibliography
+\begin_inset LatexCommand bibitem
+key "key-15"
+
+\end_inset
+
+WILKINS 1964 -- TODO
+\end_layout
+
+\begin_layout Bibliography
+\begin_inset LatexCommand bibitem
+key "key-16"
+
+\end_inset
+
+NEEDLEMAN 1988 -- TODO
+\end_layout
+
+\begin_layout Bibliography
+\begin_inset LatexCommand bibitem
+key "key-1"
+
+\end_inset
+
+Ortiz and Simo, 1986 -- TODO
+\end_layout
+
+\begin_layout Bibliography
+\begin_inset LatexCommand bibitem
+key "key-1"
+
+\end_inset
+
+Ortiz and Quigley, 1991 -- TODO
+\end_layout
+
+\begin_layout Bibliography
+\begin_inset LatexCommand bibitem
+key "key-2"
+
+\end_inset
+
+Quenette, et al.
+ -- TODO, find citation and insert year too
+\end_layout
+
+\begin_layout Bibliography
+\begin_inset LatexCommand bibitem
+key "key-3"
+
+\end_inset
+
+Tan, et al., 2004 -- TODO
+\end_layout
+
+\begin_layout Bibliography
+\begin_inset LatexCommand bibitem
+key "key-4"
+
+\end_inset
+
+Jaeger (1969), Elasticity, Fracture and Flow, 3rd Ed.
+ New York: John Wiley & Sons, Inc.
+ -- TODO
+\end_layout
+
+\begin_layout Bibliography
+\begin_inset LatexCommand bibitem
+key "key-5"
+
+\end_inset
+
+FLAC3D Manual -- TODO
+\end_layout
+
+\end_body
+\end_document



More information about the cig-commits mailing list