[cig-commits] r9107 - doc/cigma/manual

sue at geodynamics.org sue at geodynamics.org
Mon Jan 21 23:47:47 PST 2008


Author: sue
Date: 2008-01-21 23:47:47 -0800 (Mon, 21 Jan 2008)
New Revision: 9107

Added:
   doc/cigma/manual/cigma-win.lyx
Log:
todos done

Added: doc/cigma/manual/cigma-win.lyx
===================================================================
--- doc/cigma/manual/cigma-win.lyx	                        (rev 0)
+++ doc/cigma/manual/cigma-win.lyx	2008-01-22 07:47:47 UTC (rev 9107)
@@ -0,0 +1,4027 @@
+#LyX 1.5.1 created this file. For more info see http://www.lyx.org/
+\lyxformat 276
+\begin_document
+\begin_header
+\textclass amsbook
+\begin_preamble
+\usepackage{hyperref}
+
+\let\myUrl\url
+\renewcommand{\url}[1]{(\myUrl{#1})}
+\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 1
+\use_esint 0
+\cite_engine basic
+\use_bibtopic false
+\paperorientation portrait
+\leftmargin 1in
+\topmargin 1in
+\rightmargin 1in
+\bottommargin 1in
+\secnumdepth 3
+\tocdepth 3
+\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
+
+\color none
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+thispagestyle{empty}
+\end_layout
+
+\end_inset
+
+
+\begin_inset Float figure
+placement H
+wide false
+sideways false
+status open
+
+\begin_layout Standard
+\begin_inset Graphics
+	filename figures/cigma_cover.pdf
+	display color
+	width 75page%
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+
+\color none
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+thispagestyle{empty}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Title
+Cigma
+\end_layout
+
+\begin_layout Author
+© California Institute of Technology
+\newline
+Version 0.9
+\end_layout
+
+\begin_layout Date
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+today
+\end_layout
+
+\end_inset
+
+
+\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 Standard
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+raggedbottom
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+
+\newpage
+
+\end_layout
+
+\begin_layout Standard
+Introduction
+\end_layout
+
+\begin_layout Section
+About Cigma
+\end_layout
+
+\begin_layout Standard
+The CIG Model Analyzer (Cigma) consists of a suite of tools intended to
+ facilitate the comparison of numerical models.
+ CIG has developed Cigma in response to demand from the short-term tectonics
+ community for a simple tool that can perform rigorous error analysis on
+ their FEM codes.
+ The long-term goal for Cigma, however, is for it to be used for nearly
+ all geodynamics modeling codes.
+\end_layout
+
+\begin_layout Standard
+In general, Cigma is intended for three types of tasks, namely (1) error
+ analysis, (2) benchmarking, and (3) code verification.
+ 
+\end_layout
+
+\begin_layout Standard
+There are two ways in which Cigma can help you with error analysis.
+ It can take a random sampling of points inside a domain of interest and
+ analyze the pointwise differences between physical fields, or otherwise
+ perform an integration of the errors over a discretized version of the
+ domain.
+ This comparison can take place even when the meshes are not compatible.
+\end_layout
+
+\begin_layout Standard
+In benchmarking, Cigma can help the geodynamics community agree on a standard
+ solution to specific problems by facilitating the process of comparing
+ different numerical codes against each other.
+\end_layout
+
+\begin_layout Standard
+Lastly, as an automated tool, Cigma can help developers in creating regression
+ tests to ensure that software changes do not affect the consistency of
+ the results.
+\end_layout
+
+\begin_layout Standard
+At its core, Cigma draws from a variety of libraries, particularly the 
+\begin_inset LatexCommand htmlurl
+name "Tetrahedral Mesh Comparator (TMC)"
+target "www.sci.utah.edu/~bavoil/research/tetsimp/tmc/"
+
+\end_inset
+
+ from the University of Utah, which itself draws from the 
+\begin_inset LatexCommand htmlurl
+name "GTB Graphics Toolbox library"
+target "sf.net/projects/gtb"
+
+\end_inset
+
+.
+ Cigma extends and generalizes the functionality therein to handle other
+ types of elements as well as adding the ability to compare vector fields.
+\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.
+ This is a brand-new code and at present no papers are published or at press
+ for use as citations other than this manual, which is cited as follows:
+\end_layout
+
+\begin_layout Standard
+Armendariz, L., and S.
+ Kientz.
+ 
+\emph on
+Cigma User Manual.
+
+\emph default
+ Pasadena, CA: Computational Infrastructure of Geodynamics, 2007.
+ URL: geodynamics.org/cig/software/cs/cigma/cigma.pdf
+\end_layout
+
+\begin_layout Standard
+CIG requests that in your oral presentations and in your papers that you
+ indicate your use of this code and acknowledge the author 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
+Cigma development is supported by a grant from the National Science Foundation
+ to CIG, managed by the California Institute of Technology.
+ The code is being released under the GNU General Public License.
+\end_layout
+
+\begin_layout Standard
+Installation and Getting Help
+\end_layout
+
+\begin_layout Section
+Getting Help
+\end_layout
+
+\begin_layout Standard
+For help, send an e-mail to the 
+\begin_inset LatexCommand url
+name "CIG Computational Science Mailing List"
+target "cig-cs at geodynamics.org"
+
+\end_inset
+
+.
+ You can subscribe to the 
+\family typewriter
+cig-cs
+\family default
+ mailing list and view archived discussions at the 
+\begin_inset LatexCommand htmlurl
+name "CIG Mail Lists web page"
+target "geodynamics.org/cig/lists"
+
+\end_inset
+
+.
+ If you encounter any bugs or have problems installing Cigma, please submit
+ a report to the 
+\begin_inset LatexCommand htmlurl
+name "CIG Bug Tracker"
+target "geodynamics.org/bugs"
+
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Section
+Installating from Source
+\end_layout
+
+\begin_layout Standard
+To use Cigma, download the source package (in the form of a compressed tar
+ file) from the 
+\begin_inset LatexCommand htmlurl
+name "CIG Cigma web page"
+target "geodynamics.org/cig/software/packages/cs/cigma"
+
+\end_inset
+
+.
+ This step will require the GNU C and C++ compilers.
+ After unpacking the source and installing the dependencies, issue the following
+ commands
+\end_layout
+
+\begin_layout Standard
+$ make
+\end_layout
+
+\begin_layout Standard
+$ sudo make install
+\end_layout
+
+\begin_layout Subsection
+HDF5
+\end_layout
+
+\begin_layout Standard
+HDF5 is available for download from 
+\begin_inset LatexCommand htmlurl
+name "The HDF Group"
+target "hdfgroup.org/HDF5"
+
+\end_inset
+
+.
+ Binaries can be obtained at 
+\begin_inset LatexCommand htmlurl
+name "hdfgroup.org/HDF5/release/obtain5.html"
+target "hdfgroup.org/HDF5/release/obtain5.html"
+
+\end_inset
+
+.
+ To install from source, download the latest stable version of this library
+ (currently 1.6.5) and issue the following commands
+\end_layout
+
+\begin_layout Standard
+$ tar xvfz hdf5-1.6.5
+\end_layout
+
+\begin_layout Standard
+$ cd hdf5-1.6.5
+\end_layout
+
+\begin_layout Standard
+$ ./configure
+\end_layout
+
+\begin_layout Standard
+$ make
+\end_layout
+
+\begin_layout Standard
+$ sudo make install
+\end_layout
+
+\begin_layout Subsection
+VTK
+\end_layout
+
+\begin_layout Standard
+VTK is available from 
+\begin_inset LatexCommand htmlurl
+name "Kitware, Inc."
+target "www.vtk.org/get-software.php"
+
+\end_inset
+
+.
+ If you obtain the binaries from a package manager, make sure to install
+ the associated development headers along with the library.
+ To enable VTK support in Cigma, use the following flags in the configure
+ step:
+\end_layout
+
+\begin_layout Standard
+./configure --with-vtk=/path/to/vtk
+\end_layout
+
+\begin_layout Subsection
+PyTables
+\end_layout
+
+\begin_layout Standard
+PyTables is a Python extension module that builds on top of the HDF5 library.
+ It provides a convenient scripting interface to manipulate HDF5 files,
+ which can be used to manipulate the input/output files created by Cigma.
+ PyTables is available for download from 
+\begin_inset LatexCommand htmlurl
+name "PyTables"
+target "www.pytables.org"
+
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Standard
+To install this extension from source, download the latest stable version
+ (currently 2.0) and issue the following commands
+\end_layout
+
+\begin_layout Standard
+$ tar xvfz pytables-2.x
+\end_layout
+
+\begin_layout Standard
+$ cd pytables-2.x
+\end_layout
+
+\begin_layout Standard
+$ sudo python setup.py install
+\end_layout
+
+\begin_layout Subsection
+HDFView (optional)
+\end_layout
+
+\begin_layout Standard
+NCSA HDFView is a graphical user interface tool for accessing data in your
+ HDF5 files.
+ You can use it for viewing the internal file hierarchy in a tree structure,
+ adding new datasets, and modifying or deleting existing datasets.
+ You can 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 Standard
+\noindent
+\align center
+\begin_inset Float figure
+placement H
+wide false
+sideways false
+status collapsed
+
+\begin_layout Standard
+\begin_inset Caption
+
+\begin_layout Standard
+With HFDFView, you can view the internal file hierarchy in a tree structure,
+ add new datasets, and modify or delete existing datasets.
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Graphics
+	filename figures/hdfview-bmrsnog.png
+	lyxscale 70
+	width 70page%
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Error Analysis
+\end_layout
+
+\begin_layout Section
+Introduction
+\end_layout
+
+\begin_layout Standard
+When studying differential equations that represent physical systems we
+ often obtain solutions by using a variety of techniques, most of which
+ are numerical in nature.
+ In carefully designed problems one may of course obtain solutions in explicit
+ analytical form, but for the most part we will deal with approximate solutions
+ given by the Finite Element Method.
+ Without any closed-form solution available, the quality of an approximation
+ can only be assessed relative to other approximations.
+\end_layout
+
+\begin_layout Standard
+Thus, an important part of error analysis lies in the ability to calculate
+ the distance between two putative solutions.
+ Estimating the error between two arbitrarily represented fields is computationa
+lly challenging due to the variety of representations that are possible.
+ For example, each field may use its own discretization of the original
+ domain, and may use a different set of shape functions.
+\end_layout
+
+\begin_layout Section
+Distance Measures
+\end_layout
+
+\begin_layout Standard
+The simplest possible quantitative measure of the difference between two
+ distinct fields you can make consists of taking the pointwise difference
+ of both fields at a common set of points.
+ While no finite sample of points can perfectly represent a continuum of
+ values, valuable information can be inferred from a statistics analysis
+ of the resulting residual values.
+\end_layout
+
+\begin_layout Standard
+Another useful distance measure can be obtained by using the 
+\begin_inset Formula $L_{2}$
+\end_inset
+
+ norm, defined by the following integral
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \[
+\varepsilon=||u-v||_{L_{2}}=\sqrt{\int_{\Omega}||u(\vec{x})-v(\vec{x})||^{2}d\vec{x}}\]
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+This gives us a single global estimate 
+\begin_inset Formula $\varepsilon$
+\end_inset
+
+ representing the distance between the two fields 
+\begin_inset Formula $u(\vec{x})$
+\end_inset
+
+ and 
+\begin_inset Formula $v(\vec{x})$
+\end_inset
+
+.
+ Alternatively, you may think of this as the size, or norm, of the residual
+ field 
+\begin_inset Formula $\rho(\vec{x})=u(\vec{x})-v(\vec{x})$
+\end_inset
+
+.
+ If we discretize the domain 
+\begin_inset Formula $\Omega$
+\end_inset
+
+ into finite elements 
+\begin_inset Formula $\Omega_{e}$
+\end_inset
+
+, the above integral can be broken up into a sum over local contributions
+ on each element.
+ For efficiency, each contribution can be integrated over a reference element
+ 
+\begin_inset Formula $\hat{\Omega}_{e}$
+\end_inset
+
+ defined on a standard coordinate system.
+ 
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \begin{eqnarray*}
+\varepsilon^{2} & = & \sum_{e=1}^{\mathrm{nel}}\varepsilon_{e}^{2}\\
+ & = & \sum_{e=1}^{\mathrm{nel}}\int_{\Omega_{e}}||u(\vec{x})-v(\vec{x})||^{2}d\vec{x}\\
+ & = & \sum_{e=1}^{\mathrm{nel}}\int_{\hat{\Omega}_{e}}||u(\vec{\xi})-v(\vec{\xi})||^{2}J(\vec{\xi})d\vec{\xi}\end{eqnarray*}
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+In general, we won't be able to integrate each local contribution exactly
+ since the two fields 
+\begin_inset Formula $u$
+\end_inset
+
+ and 
+\begin_inset Formula $v$
+\end_inset
+
+ may have a representation that's incompatible with the local domain 
+\begin_inset Formula $\Omega_{e}$
+\end_inset
+
+.
+ However, we can approximate each 
+\begin_inset Formula $\varepsilon_{e}^{2}$
+\end_inset
+
+ by applying an appropriate quadrature rule with a tolerable truncation
+ error 
+\begin_inset LatexCommand cite
+key "Encyclopaedia of Cubature Formulas 2005"
+
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Standard
+Assuming we apply the same quadrature rule, with weights 
+\begin_inset Formula $w_{q}$
+\end_inset
+
+ and integration points 
+\begin_inset Formula $\vec{\xi}_{q}$
+\end_inset
+
+, on every element,
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \begin{eqnarray*}
+\varepsilon_{e}^{2} & = & \sum_{q=1}^{\mathrm{nq}}w_{q}||\hat{\rho}(\vec{x}_{q})||^{2}\\
+ & = & \sum_{q=1}^{\mathrm{nq}}w_{q}||u(\vec{\xi}_{q})-v(\vec{\xi}_{q})||^{2}J(\vec{\xi}_{q})\end{eqnarray*}
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+thus we arrive at the final form
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \begin{eqnarray*}
+\varepsilon & = & \sqrt{\sum_{e=1}^{\mathrm{nel}}\sum_{q=1}^{\mathrm{nq}}w_{q}||u(\vec{\xi}_{q})-v(\vec{\xi}_{q})||^{2}J(\vec{\xi}_{q})}\end{eqnarray*}
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+In calculating the norm of the residual field 
+\begin_inset Formula $\rho$
+\end_inset
+
+, Cigma will output each of the local contributions 
+\begin_inset Formula $\varepsilon_{e}^{2}$
+\end_inset
+
+ which by definition are scalar-valued cell quantities over each of their
+ corresponding elements 
+\begin_inset Formula $\Omega_{e}$
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Standard
+Cigma Components
+\end_layout
+
+\begin_layout Section
+Mesh
+\end_layout
+
+\begin_layout Standard
+In Cigma, we define a finite element mesh simply by the coordinates, 
+\begin_inset Formula $(x_{n},y_{n},z_{n})$
+\end_inset
+
+ of its degrees of freedom, and the connectivity relations 
+\begin_inset Formula $\Omega_{e}=\{n_{1},n_{2},\ldots\}$
+\end_inset
+
+ among them which define each individual element in the corresponding discretiza
+tion.
+\end_layout
+
+\begin_layout Section
+Fields
+\end_layout
+
+\begin_layout Standard
+A field is a function which assigns a physical quantity to every point in
+ space.
+ This quantity may correspond to a scalar, a vector, or even a tensor.
+ For any given differential equation problem, a finite element approximation
+ to an unknown field 
+\begin_inset Formula $\phi(\vec{x})$
+\end_inset
+
+ as a weighed sum over a fixed set of localized shape functions 
+\begin_inset Formula $\phi_{n}(\vec{x})$
+\end_inset
+
+.
+ 
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \[
+\phi(\vec{x})=\sum_{n=1}^{N}d_{n}\phi_{n}(\vec{x})\]
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Naturally, once the weights 
+\begin_inset Formula $d_{n}$
+\end_inset
+
+, or degrees of freedom as they are also called, are known to us, we can
+ evaluate 
+\begin_inset Formula $\phi(\vec{x})$
+\end_inset
+
+ at any point 
+\begin_inset Formula $\vec{x}$
+\end_inset
+
+ we desire.
+ Thus, in Cigma a field is represented simply by a list of degrees of freedom
+ 
+\begin_inset Formula $d_{n}$
+\end_inset
+
+, which may be a scalar, vector or tensor quantity, depending on the nature
+ of 
+\begin_inset Formula $\phi$
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Section
+Elements
+\end_layout
+
+\begin_layout Standard
+This release of Cigma provides you with two built-in finite element spaces
+ shown below.
+ The location of each element is indexed into a spatial database in order
+ to speed up the evaluation process.
+\end_layout
+
+\begin_layout Standard
+
+\newpage
+
+\end_layout
+
+\begin_layout Standard
+Function Space 
+\bar under
+tet4
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float figure
+placement H
+wide false
+sideways false
+status collapsed
+
+\begin_layout Standard
+\begin_inset Caption
+
+\begin_layout Standard
+Reference tetrahedral element
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Graphics
+	filename figures/reference-tet4.png
+	lyxscale 35
+	width 35page%
+
+\end_inset
+
+
+\begin_inset Formula \begin{eqnarray*}
+TN_{a} & = & \frac{1}{2}(-1-x-y-z)\\
+TN_{b} & = & \frac{1}{2}(1+x)\\
+TN_{c} & = & \frac{1}{2}(1+y)\\
+TN_{d} & = & \frac{1}{2}(1+z)\end{eqnarray*}
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+
+\newpage
+
+\end_layout
+
+\begin_layout Standard
+Function Space 
+\bar under
+hex8
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float figure
+placement H
+wide false
+sideways false
+status collapsed
+
+\begin_layout Standard
+\begin_inset Caption
+
+\begin_layout Standard
+Reference hexahedral element
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Graphics
+	filename figures/reference-hex8.png
+	lyxscale 35
+	width 35page%
+
+\end_inset
+
+
+\begin_inset Formula \begin{eqnarray*}
+HN_{a} & = & \frac{1}{8}\left(1-x\right)\left(1-y\right)\left(1-z\right)\\
+HN_{b} & = & \frac{1}{8}\left(1+x\right)\left(1-y\right)\left(1-z\right)\\
+HN_{c} & = & \frac{1}{8}\left(1-x\right)\left(1+y\right)\left(1-z\right)\\
+HN_{d} & = & \frac{1}{8}\left(1+x\right)\left(1+y\right)\left(1-z\right)\\
+HN_{e} & = & \frac{1}{8}\left(1-x\right)\left(1-y\right)\left(1+z\right)\\
+HN_{f} & = & \frac{1}{8}\left(1+x\right)\left(1-y\right)\left(1+z\right)\\
+HN_{g} & = & \frac{1}{8}\left(1-x\right)\left(1+y\right)\left(1+z\right)\\
+HN_{h} & = & \frac{1}{8}\left(1+x\right)\left(1+y\right)\left(1+z\right)\end{eqnarray*}
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Section
+Input Formats
+\end_layout
+
+\begin_layout Standard
+The underlying data storage format for Cigma is HDF5, although VTK files
+ can also be specified as input if the VTK development libraries are installed
+ when you configure and compile Cigma.
+ As described in Chapter 
+\begin_inset LatexCommand ref
+reference "cha:Running-Cigma"
+
+\end_inset
+
+, you can easily examine the structure of an input file by using the 
+\family typewriter
+cigma list
+\family default
+ command, which will simply reveal the names and dimensions of all datasets
+ inside the specified file.
+\end_layout
+
+\begin_layout Subsection
+HDF5
+\end_layout
+
+\begin_layout Standard
+The Hierarchical Data Format (HDF) is a portable file format developed at
+ the 
+\begin_inset LatexCommand htmlurl
+name "National Center for Supercomputing Applications (NCSA)"
+target "hdf.ncsa.uiuc.edu/HDF5"
+
+\end_inset
+
+.
+ It is designed for storing, retrieving, analyzing, visualizing, and converting
+ scientific data.
+ The current and most popular version is HDF5, which stores multi-dimensional
+ arrays together with ancillary data in a portable self-describing format.
+ It uses a hierarchical structure that provides application programmers
+ with a host of options for organizing how data is stored in HDF5 files.
+\end_layout
+
+\begin_layout Standard
+HDF5 files are organized in a hierarchical structure, similar to a UNIX
+ file system.
+ Two types of primary objects, groups and datasets, are stored in this structure.
+ A group contains instances of zero or more groups or datasets, while a
+ dataset stores a multi-dimensional array of data elements.
+ Both kinds of objects are accompanied by supporting metadata known as attribute
+s.
+\end_layout
+
+\begin_layout Standard
+A dataset is physically stored in two parts: a header and a data array.
+ The header contains miscellaneous metadata describing the dataset as well
+ as information that is needed to interpret the array portion of the dataset.
+ Essentially, it includes the name, datatype, dataspace, and storage layout
+ of the dataset.
+ The name is a text string identifying the dataset.
+ The datatype describes the type of the data array elements.
+ The dataspace defines the dimensionality of the dataset, i.e., the size and
+ shape of the multi-dimensional array.
+\end_layout
+
+\begin_layout Standard
+Using HDF5 datasets in Cigma allows us to avoid having to convert between
+ too many distinct formats.
+ Moreover, due to the amount of disk I/O, large finite element meshes can
+ be handled more efficiently in binary format.
+ A typical Cigma HDF5 file has the following structure:
+\end_layout
+
+\begin_layout Standard
+model.h5
+\end_layout
+
+\begin_layout Standard
+
+\backslash
+__ model
+\end_layout
+
+\begin_layout Standard
+    |__ mesh
+\end_layout
+
+\begin_layout Standard
+    |   |__ coordinates    [nno x nsd]
+\end_layout
+
+\begin_layout Standard
+    |   
+\backslash
+__ connectivity   [nel x ndof]
+\end_layout
+
+\begin_layout Standard
+    
+\backslash
+__ variables
+\end_layout
+
+\begin_layout Standard
+        
+\backslash
+__ velocity
+\end_layout
+
+\begin_layout Standard
+            
+\backslash
+__ step00010  [nno x ndim]
+\end_layout
+
+\begin_layout Standard
+You have a certain amount of flexibility in grouping your own data.
+ Generally, Cigma will only require you to specify the path to a specific
+ field dataset, along with a small amount of metadata on your field and
+ mesh datasets, described below:
+\end_layout
+
+\begin_layout Description
+MeshID an identifier assigned for use in linking child datasets to their
+ parent mesh.
+\end_layout
+
+\begin_layout Description
+MeshLocation points to the HDF5 group which contains the appropriate coordinates
+ and connectivity datasets.
+\end_layout
+
+\begin_layout Description
+FunctionSpace string identifier to determine which shape functions to use
+ for interpolating values inside the element (e.g., tet4, hex8, quad4, tri3,
+ ...).
+\end_layout
+
+\begin_layout Description
+DatasetType string identifier for classifying the type of data contained
+ in the dataset (e.g., points, connectivity, degrees of freedom, quadrature
+ rules, global quadrature points, global field values).
+\end_layout
+
+\begin_layout Subsection
+VTK Files
+\end_layout
+
+\begin_layout Standard
+The Visualization Toolkit (VTK) is a popular open source graphics library
+ for scientific visualizations.
+\end_layout
+
+\begin_layout Subsection
+Text Files
+\end_layout
+
+\begin_layout Standard
+Importing and exporting data into simple text can be accomplished with the
+ 
+\family typewriter
+cigma
+\family default
+ 
+\family typewriter
+copy
+\family default
+ command.
+ The format is always in table form, with the dimensions specified in the
+ first line.
+ For example, mesh coordinates can be specified in the following format
+\end_layout
+
+\begin_layout Standard
+nno nsd
+\end_layout
+
+\begin_layout Standard
+1 x1 y1 z1
+\end_layout
+
+\begin_layout Standard
+2 x2 y2 z2
+\end_layout
+
+\begin_layout Standard
+3 x3 y3 z3
+\end_layout
+
+\begin_layout Standard
+...
+\end_layout
+
+\begin_layout Standard
+Mesh connectivity with 
+\end_layout
+
+\begin_layout Standard
+nel ndofs
+\end_layout
+
+\begin_layout Standard
+1 node_1 node_2 node_3 node_4 ...
+\end_layout
+
+\begin_layout Standard
+2 node_1 node_2 node_3 node_4 ...
+\end_layout
+
+\begin_layout Standard
+3 node_1 node_2 node_3 node_4 ...
+\end_layout
+
+\begin_layout Standard
+...
+\end_layout
+
+\begin_layout Standard
+A generic field with 
+\family typewriter
+ndim
+\family default
+ components (i.e., scalar, vector, or tensor) is specified by
+\end_layout
+
+\begin_layout Standard
+num ndim
+\end_layout
+
+\begin_layout Standard
+1 f1 f2 f3 ..
+\end_layout
+
+\begin_layout Standard
+2 f1 f2 f3 ..
+\end_layout
+
+\begin_layout Standard
+...
+\end_layout
+
+\begin_layout Standard
+In this last case, the number of rows could refer to either 
+\family typewriter
+nno
+\family default
+ or 
+\family typewriter
+nel
+\family default
+, depending on whether the field is node-based or cell-based.
+\end_layout
+
+\begin_layout Standard
+\begin_inset LatexCommand label
+name "cha:Running-Cigma"
+
+\end_inset
+
+Running Cigma
+\end_layout
+
+\begin_layout Standard
+Cigma is designed to be scriptable, and thus all operations can be specified
+ as command line arguments given to a single executable called 
+\family typewriter
+cigma
+\family default
+.
+ The available commands can be listed with 
+\family typewriter
+cigma --help
+\family default
+, and help on a specific command can be obtained with 
+\family typewriter
+cigma help <command>
+\family default
+.
+\end_layout
+
+\begin_layout Standard
+Since Cigma is used for obtaining error estimates between arbitrary fields,
+ its primary operation involves the 
+\family typewriter
+compare
+\family default
+ command.
+ You will need to provide two datasets describing each of the two fields,
+ along with an integration rule and a mesh over which to integrate, although
+ these last two will have reasonable defaults if they are not specified.
+\end_layout
+
+\begin_layout Standard
+Specifying the complete path to a dataset consists of the special form 
+\family typewriter
+\series bold
+filepath:dataset
+\family default
+\series default
+, a colon-delimited pair of file path and dataset path.
+\end_layout
+
+\begin_layout Section
+Listing Data
+\end_layout
+
+\begin_layout Standard
+Since Cigma relies so much on being able to specify dataset paths, we have
+ provided a command called 
+\family typewriter
+list
+\family default
+ for viewing the structure of input file.
+ Its usage is very simple:
+\newline
+
+\end_layout
+
+\begin_layout Standard
+To view the structure of an HDF5 file:
+\end_layout
+
+\begin_layout Standard
+$ 
+\series bold
+cigma list file.h5
+\end_layout
+
+\begin_layout Standard
+/mesh/coordinates           Dataset {119827, 3}
+\end_layout
+
+\begin_layout Standard
+/mesh/connectivity          Dataset {661929, 4}
+\end_layout
+
+\begin_layout Standard
+/vars/displacement/step0    Dataset {119827, 3}
+\end_layout
+
+\begin_layout Standard
+/residuals/comparison0      Dataset {661929, 1}
+\end_layout
+
+\begin_layout Standard
+If VTK support is enabled, you can view the structure of a VTK file with:
+\end_layout
+
+\begin_layout Standard
+$ 
+\series bold
+cigma list file.vtk
+\end_layout
+
+\begin_layout Standard
+Reading file.vtk
+\end_layout
+
+\begin_layout Standard
+Points = 119827
+\end_layout
+
+\begin_layout Standard
+Cells = 661929
+\end_layout
+
+\begin_layout Standard
+PointDataArray[0] = displacements_t0 (119827 x 3)
+\end_layout
+
+\begin_layout Section
+Converting Data
+\end_layout
+
+\begin_layout Standard
+In order to easily move data into and out of the HDF5 format, you can use
+ the 
+\family typewriter
+cigma copy
+\family default
+ command.
+ By default, it relies on the file extension to detect what format to use
+ when reading or writing data.
+ Various examples are given below.
+\newline
+
+\end_layout
+
+\begin_layout Standard
+Usage is typically
+\end_layout
+
+\begin_layout Standard
+
+\size small
+cigma copy <source-path> <destination-path>
+\end_layout
+
+\begin_layout Standard
+
+\size small
+cigma copy --source=<path> --destination=<path>
+\end_layout
+
+\begin_layout Standard
+
+\size small
+cigma copy -s <path> -d <path>
+\end_layout
+
+\begin_layout Standard
+To dump the mesh information into a text file:
+\end_layout
+
+\begin_layout Standard
+
+\size small
+cigma copy --source=file.h5:/model/mesh/coords --destination=model-coords.txt
+\end_layout
+
+\begin_layout Standard
+
+\size small
+cigma copy --source=file.h5:/model/mesh/connect --destination=model-connect.txt
+\end_layout
+
+\begin_layout Standard
+To import a scalar field 
+\family typewriter
+pressure0
+\family default
+ from a VTK file into an HDF5 file:
+\end_layout
+
+\begin_layout Standard
+
+\size small
+cigma copy --source=file.vtk:pressure0 --destination=file.h5:/model/variables/pres
+sure/t0
+\end_layout
+
+\begin_layout Standard
+To import a vector field called 
+\family typewriter
+displacement15
+\family default
+ from a VTK file into an HDF5 file:
+\end_layout
+
+\begin_layout Standard
+
+\size small
+cigma copy --source=file.vtk:displacement15 --destination=file.h5:/model/variables
+/displacement/t15
+\end_layout
+
+\begin_layout Standard
+To convert residual data into a VTK file, and then into ASCII:
+\end_layout
+
+\begin_layout Standard
+
+\size small
+cigma copy --source=file.h5:/model/residuals/pressure0 --destination=pressure0-re
+siduals.vtk
+\end_layout
+
+\begin_layout Standard
+
+\size small
+cigma copy --source=pressure0-residuals.vtk --destination=residuals.txt
+\end_layout
+
+\begin_layout Standard
+
+\end_layout
+
+\begin_layout Section
+Metadata
+\end_layout
+
+\begin_layout Standard
+As described in a previous chapter on the HDF5 input files, you can attach
+ arbitrary metadata to any number of your datasets or groups.
+ Cigma will make use of a few reserved attributes to determine which mesh
+ and shape functions to use on a particular dataset, but in general you
+ are free to assign your own.
+\end_layout
+
+\begin_layout Standard
+Usage is typically: 
+\end_layout
+
+\begin_layout Standard
+
+\size small
+cigma set <target-object-path> <attribute-name>[:<type>] <value>
+\end_layout
+
+\begin_layout Standard
+
+\size small
+cigma get <target-object-path> [<attribute>]
+\newline
+
+\end_layout
+
+\begin_layout Standard
+For example, 
+\end_layout
+
+\begin_layout Standard
+
+\size small
+cigma set --target=file.h5:/model/ --attribute=AUTHOR --value='John Doe'
+\end_layout
+
+\begin_layout Standard
+
+\size small
+cigma set --target=file.h5:/model/vars/pressure --attribute=Units --value=MPa
+\end_layout
+
+\begin_layout Standard
+
+\size small
+cigma set --target=file.h5:/model/vars/pressure/t10 --attribute=Step:int32
+ --value=10 
+\end_layout
+
+\begin_layout Standard
+
+\size small
+cigma set --target=file.h5:/model/vars/pressure/t10 --attribute=MeshID:int32
+ --value=1234
+\end_layout
+
+\begin_layout Standard
+
+\size small
+cigma set --target=file.h5:/model/vars/pressure/t10 --attribute=FunctionSpace
+ --value=tet4
+\end_layout
+
+\begin_layout Standard
+
+\end_layout
+
+\begin_layout Section
+Comparing Two Fields
+\end_layout
+
+\begin_layout Standard
+Comparing two arbitrary finite element fields can be accomplished with the
+ 
+\family typewriter
+`cigma compare'
+\family default
+ command line utility.
+ By default, the comparison will take place over the elements in the mesh
+ of the first field.
+ Finally, the square of each of the local residual values are written to
+ the specified VTK output file as cell-based scalars.
+\newline
+
+\end_layout
+
+\begin_layout Standard
+A basic comparison can be as simple as specifying the following arguments:
+\end_layout
+
+\begin_layout Standard
+
+\series bold
+cigma compare --output=squared-residuals.vtk   
+\backslash
+
+\end_layout
+
+\begin_layout Standard
+ 
+\series bold
+             --first=field1.h5:/field1/stepN  
+\backslash
+
+\end_layout
+
+\begin_layout Standard
+ 
+\series bold
+             --second=field2.h5:/field2/stepN
+\end_layout
+
+\begin_layout Subsection
+Specifying a Mesh
+\end_layout
+
+\begin_layout Standard
+To override the mesh used in the integration, you can specify an extra argument
+ providing the location of the mesh:
+\end_layout
+
+\begin_layout Standard
+
+\series bold
+cigma compare --mesh=mesh.h5:/model/mesh/   
+\backslash
+
+\end_layout
+
+\begin_layout Standard
+ 
+\series bold
+             [...]
+\end_layout
+
+\begin_layout Standard
+You can also specify the coordinates and connectivity arrays separately,
+ in case they reside in separate files.
+\end_layout
+
+\begin_layout Standard
+
+\series bold
+cigma compare --mesh-coordinates=file1.h5:/model/mesh/coordinates    
+\backslash
+
+\end_layout
+
+\begin_layout Standard
+ 
+\series bold
+             --mesh-connectivity=file2.h5:/model/mesh/connectivity  
+\backslash
+
+\end_layout
+
+\begin_layout Standard
+ 
+\series bold
+             [...]
+\end_layout
+
+\begin_layout Subsection
+Specifying a Quadrature Rule
+\end_layout
+
+\begin_layout Standard
+If you wish to specify your own quadrature rule, you will have to provide
+ the quadrature weights and points in the appropriate reference element.
+ This can be done with the following additional argument:
+\end_layout
+
+\begin_layout Standard
+
+\series bold
+cigma compare --rule=quadrature-rules.h5:/path/to/rule  
+\backslash
+
+\end_layout
+
+\begin_layout Standard
+ 
+\series bold
+             [...]
+\end_layout
+
+\begin_layout Standard
+You may also specify the location of the points and weights separately:
+\end_layout
+
+\begin_layout Standard
+
+\series bold
+cigma compare --rule-points=file.h5:/path/to/rule/points    
+\backslash
+
+\end_layout
+
+\begin_layout Standard
+ 
+\series bold
+             --rule-weights=file.h5:/path/to/rule/weights  
+\backslash
+
+\end_layout
+
+\begin_layout Standard
+ 
+\series bold
+             [...]
+\end_layout
+
+\begin_layout Standard
+
+\end_layout
+
+\begin_layout Standard
+Alternatively, to perform a pointwise comparison at random sample points
+ inside each element in the first mesh,
+\end_layout
+
+\begin_layout Standard
+
+\series bold
+cigma compare --samples-per-element=1    
+\backslash
+
+\end_layout
+
+\begin_layout Standard
+ 
+\series bold
+             [...]
+\end_layout
+
+\begin_layout Subsection
+Against Known Values
+\end_layout
+
+\begin_layout Standard
+A finite element description might not always be available for one of the
+ fields.
+ However, you can break the comparison into several steps if you have a
+ means to compute that field on any of the required points.
+\end_layout
+
+\begin_layout Standard
+First, extract the global coordinates of the integration points.
+ This will result in an explicit list of points over which to evaluate your
+ field.
+\end_layout
+
+\begin_layout Standard
+cigma extract --mesh=field1.h5:/model/mesh/  
+\backslash
+
+\end_layout
+
+\begin_layout Standard
+              --output=points.h5:/points
+\end_layout
+
+\begin_layout Standard
+At this point, one possibility would be to dump explicit the list of points
+ to a text file, generate the corresponding list of values on your own and
+ import that lsit of values back into an HDF5 file that Cigma can understand.
+\end_layout
+
+\begin_layout Standard
+cigma copy --source=points.h5:/points  
+\backslash
+
+\end_layout
+
+\begin_layout Standard
+           --destination=points.txt
+\end_layout
+
+\begin_layout Standard
+
+\end_layout
+
+\begin_layout Standard
+# create values.txt
+\end_layout
+
+\begin_layout Standard
+
+\end_layout
+
+\begin_layout Standard
+cigma copy --source=values.txt  
+\backslash
+
+\end_layout
+
+\begin_layout Standard
+           --destination=values.h5:/stepN_values
+\end_layout
+
+\begin_layout Standard
+
+\end_layout
+
+\begin_layout Standard
+Lastly, you can provide the path to the explicit set of values with
+\end_layout
+
+\begin_layout Standard
+cigma compare --output=squared-residuals.vtk
+\end_layout
+
+\begin_layout Standard
+              --first=field1.h5:/field1/stepN
+\end_layout
+
+\begin_layout Standard
+              --second=values.h5:/stepN_values
+\end_layout
+
+\begin_layout Standard
+
+\end_layout
+
+\begin_layout Subsection
+Against a Known Function
+\end_layout
+
+\begin_layout Standard
+If one of your fields is easily described by an analytic expression, then
+ you also have the option to compile your analytic function into cigma,
+ which will enable the 
+\family typewriter
+compare
+\family default
+ command to reference your function by name:
+\end_layout
+
+\begin_layout Standard
+
+\series bold
+cigma compare --output=squared-residuals.vtk 
+\backslash
+
+\end_layout
+
+\begin_layout Standard
+ 
+\series bold
+             --first=field1.h5:/vars/displacement/step0 
+\backslash
+
+\end_layout
+
+\begin_layout Standard
+ 
+\series bold
+             --second=
+\bar under
+disloc3d
+\series default
+\bar default
+ 
+\series bold
+ 
+\end_layout
+
+\begin_layout Standard
+You may also interact with your analytic function by using the 
+\family typewriter
+cigma eval
+\family default
+ command, and obtain a set of values which may then be passed back to the
+ compare command.
+ 
+\end_layout
+
+\begin_layout Standard
+cigma eval --function=disloc3d 
+\backslash
+
+\end_layout
+
+\begin_layout Standard
+           --points=points.h5:/points 
+\backslash
+
+\end_layout
+
+\begin_layout Standard
+           --values=values.h5:/disloc3d_values
+\end_layout
+
+\begin_layout Standard
+
+\end_layout
+
+\begin_layout Standard
+cigma compare --output=squared-residuals.vtk 
+\backslash
+
+\end_layout
+
+\begin_layout Standard
+              --first=field1.h5:/vars/displacement/step0 
+\backslash
+
+\end_layout
+
+\begin_layout Standard
+              --second=values.h5:/disloc3d_values
+\end_layout
+
+\begin_layout Standard
+
+\end_layout
+
+\begin_layout Standard
+
+\end_layout
+
+\begin_layout Standard
+
+\end_layout
+
+\begin_layout Standard
+
+\end_layout
+
+\begin_layout Standard
+
+\end_layout
+
+\begin_layout Standard
+Visualization
+\end_layout
+
+\begin_layout Standard
+As can be seen from the two images in Figure 
+\begin_inset LatexCommand ref
+reference "fig:PyLith-solution"
+
+\end_inset
+
+, simply visualizing two different solutions side by side does not give
+ you enough insight into their actual differences.
+ By using Cigma to calculate the residual field between them, you can get
+ a better idea for how the local contributions to the global error are distribut
+ed both spatially and temporally.
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float figure
+placement H
+wide false
+sideways false
+status collapsed
+
+\begin_layout Standard
+\align center
+\begin_inset Graphics
+	filename figures/ssng_tet4_1000m_pylith_disp_t00.png
+	lyxscale 40
+	width 40page%
+
+\end_inset
+
+\InsetSpace ~
+
+\begin_inset Graphics
+	filename figures/ssng_tet4_1000m_geofest_disp_t00.png
+	lyxscale 40
+	width 40page%
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Caption
+
+\begin_layout Standard
+\noindent
+\begin_inset LatexCommand label
+name "fig:PyLith-solution"
+
+\end_inset
+
+Solution of a viscoelastic problem with a fault using two finite element
+ codes: PyLith solution (left) and GeoFEST solution (right).
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Section
+Benchmark Cases
+\end_layout
+
+\begin_layout Standard
+Here we compare the output from two codes, PyLith-0.8 and GeoFEST-4.5, on
+ two 
+\begin_inset LatexCommand htmlurl
+name "benchmark cases"
+target "geodynamics.org/cig/workinggroups/short/workarea/benchmarks"
+
+\end_inset
+
+ defined by the CIG Short-Term Tectonics working group.
+ They are both defined on cube domain (Figure 
+\begin_inset LatexCommand ref
+reference "fig:Cube-domain-of"
+
+\end_inset
+
+) with sides having a length of 24 km, consisting of two layers of different
+ material types.
+ The top layer is nearly elastic while the bottom layer follows viscoelastic
+ relaxation of stresses.
+ Bottom and side displacements are set to the elastic analytic solution.
+ A symmetric boundary condition is also imposed on the y=0 plane.
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float figure
+placement H
+wide false
+sideways false
+status collapsed
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Graphics
+	filename figures/layers.png
+	lyxscale 25
+	width 25page%
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Caption
+
+\begin_layout Standard
+\noindent
+\begin_inset LatexCommand label
+name "fig:Cube-domain-of"
+
+\end_inset
+
+Cube domain of 24 km length consisting of two layers of different material
+ types.
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+The first benchmark problem (left) consists of a vertical right-lateral
+ strike-slip fault.
+ The second benchmark problem consists of a 45-degree dipping reverse fault.
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float figure
+placement H
+wide false
+sideways false
+status collapsed
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Graphics
+	filename figures/strike-slip-fault.png
+	lyxscale 25
+	width 25page%
+
+\end_inset
+
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+
+\begin_inset Graphics
+	filename figures/reverse-slip-fault.png
+	lyxscale 25
+	width 25page%
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Caption
+
+\begin_layout Standard
+Two benchmark problems: (left) Benchmark problem consisting of a vertical
+ right-lateral strike-slip fault; (right) Benchmark problem consisting of
+ a 45-degree dipping reverse fault.
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+In both cases we solve for the displacement and vector fields at various
+ time steps, namely 0, 1, 5, and 10 years.
+ In the plots below, we show the distribution of the squared local residuals
+ on each cell.
+\end_layout
+
+\begin_layout Subsection
+Strike-Slip with No Gravity
+\end_layout
+
+\begin_layout Standard
+In this section, we show ten equally spaced isosurfaces of the displacement
+ field residuals for the strike-slip benchmark (0 and 10 years shown).
+ In Figure 
+\begin_inset LatexCommand ref
+reference "fig:PyLith-solution"
+
+\end_inset
+
+, we see that the differences are very localized at t=0 years.
+ There is not much difference between time steps at t=1, 5 and 10 years,
+ so we are only showing the last time step.
+ Note that the maximum errors are localized to the interface between the
+ two layers on the symmetric boundary.
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float figure
+placement H
+wide false
+sideways false
+status collapsed
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Graphics
+	filename figures/ssng-p0500-g0500-isosurf-disp-000.png
+	lyxscale 30
+	width 30page%
+
+\end_inset
+
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+
+\begin_inset Graphics
+	filename figures/ssng-p0500-g0500-isosurf-disp-100.png
+	lyxscale 30
+	width 30page%
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Caption
+
+\begin_layout Standard
+Strike-slip: PyLith-GeoFEST comparison of displacement residuals on a 500m
+ resolution mesh (left: t=0 years, right: t=10 years).
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Slightly different behavior can be observed in the velocity field residuals.
+ Shown here are ten equally spaced isosurfaces at each time step, where
+ each isosurface is displayed as a point distribution to reveal the inner
+ structure.
+ Note that after 10 years, most of the disagreement occurs inside the bottom
+ viscoelastic layer, centered around the fault's interior sharp corner.
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float figure
+placement H
+wide false
+sideways false
+status collapsed
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Graphics
+	filename figures/ssng-p0500-g0500-point-isosurf-velo-000.png
+	lyxscale 30
+	width 30page%
+
+\end_inset
+
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+
+\begin_inset Graphics
+	filename figures/ssng-p0500-g0500-point-isosurf-velo-010.png
+	lyxscale 30
+	width 30page%
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Caption
+
+\begin_layout Standard
+Strike-slip: PyLith-GeoFEST comparison of velocity residuals on a 500m resolutio
+n mesh (left: t=0 years, right: t=1 year).
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float figure
+placement H
+wide false
+sideways false
+status collapsed
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Graphics
+	filename figures/ssng-p0500-g0500-point-isosurf-velo-050.png
+	lyxscale 30
+	width 30page%
+
+\end_inset
+
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+
+\begin_inset Graphics
+	filename figures/ssng-p0500-g0500-point-isosurf-velo-100.png
+	lyxscale 30
+	width 30page%
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Caption
+
+\begin_layout Standard
+Strike-slip: PyLith-GeoFEST comparison of velocity residuals on a 500m resolutio
+n mesh (left: t=5 years, right: t=10 years).
+ 
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Finally, here is a higher resolution comparison of the displacement residuals
+ at t=0 years, sampled over a 250m resolution mesh.
+ Displayed here are ten equally spaced isosurfaces, nine of which are very
+ near the fault.
+ In this case, the linear taper over the internal edges of the fault is
+ clearly visible.
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float figure
+placement H
+wide false
+sideways false
+status collapsed
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Graphics
+	filename figures/ssng-p0250-g0500-point-isosurf-disp-000.png
+	lyxscale 35
+	width 35page%
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Caption
+
+\begin_layout Standard
+Strike-slip: PyLith-GeoFEST comparison of displacement residuals on a 250m
+ resolution mesh (t=0 years).
+ 
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Subsection
+Reverse-Slip with No Gravity
+\end_layout
+
+\begin_layout Standard
+You can also visualize the distribution of errors by plotting the residual
+ field values over the surface of each cell and applying a threshold filter
+ which eliminates cells containing values outside a threshold interval.
+ Here we show how velocity field residuals in the reverse-slip benchmark
+ are distributed temporally by throwing away all squared residuals lower
+ than 
+\begin_inset Formula $10^{-7}(\mathrm{m}/\mathrm{s})^{2}$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float figure
+placement H
+wide false
+sideways false
+status collapsed
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Graphics
+	filename figures/rsng-p0500-g0500-cell-threshold-velo-000.png
+	lyxscale 30
+	width 30page%
+
+\end_inset
+
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+
+\begin_inset Graphics
+	filename figures/rsng-p0500-g0500-cell-threshold-velo-010.png
+	lyxscale 30
+	width 30page%
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Caption
+
+\begin_layout Standard
+Reverse-slip: PyLith-GeoFEST comparison of velocity residuals on a 500m
+ resolution mesh (left: t=0 years, right: t=1 year).
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float figure
+placement H
+wide false
+sideways false
+status collapsed
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Graphics
+	filename figures/rsng-p0500-g0500-cell-threshold-velo-050.png
+	lyxscale 30
+	width 30page%
+
+\end_inset
+
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+
+\begin_inset Graphics
+	filename figures/rsng-p0500-g0500-cell-threshold-velo-100.png
+	lyxscale 30
+	width 30page%
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Caption
+
+\begin_layout Standard
+Reverse-slip: PyLith-GeoFEST comparison of velocity residuals on a 500m
+ resolution mesh (left: t=5 years, right: t=10 years).
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Finally, below we display ten equally spaced isosurfaces over the displacement
+ field residuals of the reverse-slip benchmark.
+ Note that after 1 year, most of the disagreement occurs in the bottom viscoelas
+tic layer.
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float figure
+placement H
+wide false
+sideways false
+status collapsed
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Graphics
+	filename figures/rsng-p0500-g0500-point-isosurf-res-disp-000.png
+	lyxscale 35
+	width 35page%
+
+\end_inset
+
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+
+\begin_inset Graphics
+	filename figures/rsng-p0500-g0500-point-isosurf-res-disp-010.png
+	lyxscale 35
+	width 35page%
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Caption
+
+\begin_layout Standard
+Reverse-slip: PyLith-GeoFEST comparison of displacement residuals on a 500m
+ resolution mesh (left: t=0 years, right: t=1 year).
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float figure
+placement H
+wide false
+sideways false
+status collapsed
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Graphics
+	filename figures/rsng-p0500-g0500-point-isosurf-res-disp-050.png
+	lyxscale 35
+	width 35page%
+
+\end_inset
+
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+
+\begin_inset Graphics
+	filename figures/rsng-p0500-g0500-point-isosurf-res-disp-100.png
+	lyxscale 35
+	width 35page%
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Caption
+
+\begin_layout Standard
+Reverse-slip: PyLith-GeoFEST comparison of displacement residuals on a 500m
+ resolution mesh (left: t=5 years, right: t=10 years).
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\start_of_appendix
+Shape Functions
+\end_layout
+
+\begin_layout Section
+Linear Tetrahedral Element (tet4)
+\end_layout
+
+\begin_layout Standard
+\begin_inset Tabular
+<lyxtabular version="3" rows="1" columns="2">
+<features>
+<column alignment="center" valignment="top" width="0">
+<column alignment="center" valignment="top" width="0">
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+\begin_inset Graphics
+	filename figures/cigma-abcd-triangle.jpg
+	lyxscale 25
+	scale 25
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+\begin_inset Formula $\begin{array}{ccccc}
+ &  &  & \phi\\
+(-1, & -1, & -1) & \mapsto & a\\
+(+1, & -1, & -1) & \mapsto & b\\
+(-1, & +1, & -1) & \mapsto & c\\
+(-1, & -1, & +1) & \mapsto & d\end{array}$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+
+\end_layout
+
+\begin_layout Standard
+A field 
+\begin_inset Formula $\vec{\varphi}=\varphi_{x}\hat{x}+\varphi_{y}\hat{y}+\varphi_{z}\hat{z}$
+\end_inset
+
+ defined over a linear tetrahedral element with vertices at 
+\begin_inset Formula $A(x_{0},y_{0},z_{0})$
+\end_inset
+
+, 
+\begin_inset Formula $B(x_{1},y_{1},z_{1})$
+\end_inset
+
+, 
+\begin_inset Formula $C(x_{2},y_{2},z_{2})$
+\end_inset
+
+, 
+\begin_inset Formula $D(x_{3},y_{3},z_{3})$
+\end_inset
+
+, has the following functional form inside the reference tetrahedral element
+ shown in Figure 
+\begin_inset LatexCommand ref
+reference "fig:Cube-domain-of"
+
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \[
+\begin{array}{c}
+\varphi_{x}(\vec{\xi})=\alpha_{0}+\alpha_{1}\xi+\alpha_{2}\eta+\alpha_{3}\zeta\\
+\varphi_{y}(\vec{\xi})=\beta_{0}+\beta_{1}\xi+\beta_{2}\eta+\beta_{3}\zeta\\
+\varphi_{z}(\vec{\xi})=\gamma_{0}+\gamma_{1}\xi+\gamma_{2}\eta+\gamma_{3}\zeta\end{array}\]
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+In particular, the map from the reference coordinates into the regular coordinat
+es vector 
+\begin_inset Formula $\vec{x}(\vec{\xi})=x\hat{(\vec{\xi})x}+y(\vec{\xi})\hat{y}+y(\vec{\xi})\hat{z}$
+\end_inset
+
+ looks like
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \[
+\begin{array}{c}
+x(\vec{\xi})=\alpha_{0}+\alpha_{1}\xi+\alpha_{2}\eta+\alpha_{3}\zeta\\
+y(\vec{\xi})=\beta_{0}+\beta_{1}\xi+\beta_{2}\eta+\beta_{3}\zeta\\
+z(\vec{\xi})=\gamma_{0}+\gamma_{1}\xi+\gamma_{2}\eta+\gamma_{3}\zeta\end{array}\]
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+The following natural mappings uniquely determine the coefficients 
+\begin_inset Formula $\alpha_{k}$
+\end_inset
+
+, 
+\begin_inset Formula $\beta_{k}$
+\end_inset
+
+, 
+\begin_inset Formula $\gamma_{k}$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \begin{eqnarray*}
+\vec{x}(-1,-1,-1) & \mapsto & (x_{0},y_{0},z_{0})\\
+\vec{x}(+1,-1,-1) & \mapsto & (x_{1},y_{1},z_{1})\\
+\vec{x}(-1,+1,-1) & \mapsto & (x_{2},y_{2},z_{2})\\
+\vec{x}(-1,-1,+1) & \mapsto & (x_{3},y_{3},z_{3})\end{eqnarray*}
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Considering only the first component 
+\begin_inset Formula $x(\vec{\xi})$
+\end_inset
+
+, we can obtain the matrix equation 
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \[
+\begin{array}{c}
+a\\
+b\\
+c\\
+d\end{array}\left[\begin{array}{cccc}
+1 & (-1) & (-1) & (-1)\\
+1 & (+1) & (-1) & (-1)\\
+1 & (-1) & (+1) & (-1)\\
+1 & (-1) & (-1) & (+1)\end{array}\right]\left[\begin{array}{c}
+\alpha_{0}\\
+\alpha_{1}\\
+\alpha_{2}\\
+\alpha_{3}\end{array}\right]=\left[\begin{array}{c}
+x_{0}\\
+x_{1}\\
+x_{2}\\
+x_{3}\end{array}\right]\]
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Applying our desired map to the other two functions yields two other identical
+ systems.
+ Thus we may augment the system as follows,
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \[
+\left[\begin{array}{cccc}
+1 & -1 & -1 & -1\\
+1 & +1 & -1 & -1\\
+1 & -1 & +1 & -1\\
+1 & -1 & -1 & +1\end{array}\right]\left[\begin{array}{ccc}
+\alpha_{0} & \beta_{0} & \gamma_{0}\\
+\alpha_{1} & \beta_{1} & \gamma_{1}\\
+\alpha_{2} & \beta_{2} & \gamma_{2}\\
+\alpha_{3} & \beta_{3} & \gamma_{3}\end{array}\right]=\left[\begin{array}{ccc}
+x_{0} & y_{0} & z_{0}\\
+x_{1} & y_{1} & z_{1}\\
+x_{2} & y_{2} & z_{2}\\
+x_{3} & y_{3} & z_{3}\end{array}\right]\]
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Now we can easily invert the square matrix on the left, yielding the values
+ of the unknown coefficients,
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \[
+\left[\begin{array}{ccc}
+\alpha_{0} & \beta_{0} & \gamma_{0}\\
+\alpha_{1} & \beta_{1} & \gamma_{1}\\
+\alpha_{2} & \beta_{2} & \gamma_{2}\\
+\alpha_{3} & \beta_{3} & \gamma_{3}\end{array}\right]=\frac{1}{2}\left[\begin{array}{cccc}
+-1 & 1 & 1 & 1\\
+-1 & 1 & 0 & 0\\
+-1 & 0 & 1 & 0\\
+-1 & 0 & 0 & 1\end{array}\right]\left[\begin{array}{ccc}
+x_{0} & y_{0} & z_{0}\\
+x_{1} & y_{1} & z_{1}\\
+x_{2} & y_{2} & z_{2}\\
+x_{3} & y_{3} & z_{3}\end{array}\right]\]
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Using the values for
+\begin_inset Formula $\alpha_{k}$
+\end_inset
+
+, we find that 
+\begin_inset Formula $x(\vec{\xi})$
+\end_inset
+
+ becomes
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \begin{eqnarray*}
+x(\vec{\xi}) & = & \alpha_{0}+\alpha_{1}\xi+\alpha_{2}\eta+\alpha_{3}\zeta\\
+ & = & \,\,\,\left[\frac{1}{2}\left(-x_{0}+x_{1}+x_{2}+x_{3}\right)\right]\\
+ &  & +\left[\frac{1}{2}\left(-x_{0}+x_{1}\right)\right]\xi\\
+ &  & +\left[\frac{1}{2}\left(-x_{0}+x_{2}\right)\right]\eta\end{eqnarray*}
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Rearranging terms, we get
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \begin{eqnarray*}
+x(\vec{\xi}) & = & \,\,\,\left[\frac{1}{2}\left(-1-\xi-\eta-\zeta\right)\right]x_{0}\\
+ &  & +\left[\frac{1}{2}\left(1+\xi\right)\right]x_{1}\\
+ &  & +\left[\frac{1}{2}\left(1+\eta\right)\right]x_{2}\\
+ &  & +\left[\frac{1}{2}\left(1+\zeta\right)\right]x_{3}\end{eqnarray*}
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \begin{eqnarray*}
+x(\vec{\xi}) & = & N_{0}(\vec{\xi})x_{0}+N_{1}(\vec{\xi})x_{1}+N_{2}(\vec{\xi})x_{2}+N_{3}(\vec{\xi})x_{3}\\
+y(\vec{\xi}) & = & N_{0}(\vec{\xi})y_{0}+N_{1}(\vec{\xi})y_{1}+N_{2}(\vec{\xi})y_{2}+N_{3}(\vec{\xi})y_{3}\\
+z(\vec{\xi}) & = & N_{0}(\vec{\xi})z_{0}+N_{1}(\vec{\xi})z_{1}+N_{2}(\vec{\xi})z_{2}+N_{3}(\vec{\xi})z_{3}\end{eqnarray*}
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+
+\end_layout
+
+\begin_layout Standard
+where
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \begin{eqnarray*}
+N_{0}(\vec{\xi}) & = & \frac{1}{2}\left(-1-\xi-\eta-\zeta\right)\\
+N_{1}(\vec{\xi}) & = & \frac{1}{2}\left(1+\xi\right)\\
+N_{2}(\vec{\xi}) & = & \frac{1}{2}\left(1+\eta\right)\\
+N_{3}(\vec{\xi}) & = & \frac{1}{2}\left(1+\zeta\right)\end{eqnarray*}
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+
+\end_layout
+
+\begin_layout Standard
+As a final note, observe that we can streamline the evaluation process over
+ any number of points, 
+\begin_inset Formula $\vec{\xi}_{0},\vec{\xi}_{1},\vec{\xi}_{2},\ldots$
+\end_inset
+
+, inside the same element via the following matrix multiplication
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \[
+\left[\begin{array}{ccc}
+x(\vec{\xi}_{0}) & y(\vec{\xi}_{0}) & z(\vec{\xi}_{0})\\
+x(\vec{\xi}_{1}) & y(\vec{\xi}_{1}) & z(\vec{\xi}_{1})\\
+x(\vec{\xi}_{2}) & y(\vec{\xi}_{2}) & z(\vec{\xi}_{2})\\
+\vdots & \vdots & \vdots\end{array}\right]=\left[\begin{array}{cccc}
+N_{0}(\vec{\xi}_{0}) & N_{1}(\vec{\xi}_{0}) & N_{2}(\vec{\xi}_{0}) & N_{3}(\vec{\xi}_{0})\\
+N_{0}(\vec{\xi}_{1}) & N_{1}(\vec{\xi}_{1}) & N_{2}(\vec{\xi}_{1}) & N_{3}(\vec{\xi}_{1})\\
+N_{0}(\vec{\xi}_{2}) & N_{1}(\vec{\xi}_{2}) & N_{2}(\vec{\xi}_{2}) & N_{3}(\vec{\xi}_{2})\\
+\vdots & \vdots & \vdots & \vdots\end{array}\right]\left[\begin{array}{ccc}
+x{}_{0} & y_{0} & z_{0}\\
+x_{1} & y_{1} & z_{1}\\
+x_{2} & y_{2} & z_{2}\\
+x_{3} & y_{3} & z_{3}\end{array}\right]\]
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+
+\end_layout
+
+\begin_layout Standard
+
+\end_layout
+
+\begin_layout Subsection
+Jacobian Matrix
+\end_layout
+
+\begin_layout Standard
+Recall the definition of the Jacobian matrix:
+\end_layout
+
+\begin_layout Standard
+
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Tabular
+<lyxtabular version="3" rows="1" columns="2">
+<features>
+<column alignment="center" valignment="top" width="0">
+<column alignment="center" valignment="top" width="0">
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+\begin_inset Formula $\frac{\partial\vec{x}}{\partial\vec{\xi}}=\left[\begin{array}{ccc}
+\frac{\partial x}{\partial\xi} & \frac{\partial x}{\partial\eta} & \frac{\partial x}{\partial\zeta}\\
+\frac{\partial y}{\partial\xi} & \frac{\partial y}{\partial\eta} & \frac{\partial y}{\partial\zeta}\\
+\frac{\partial z}{\partial\xi} & \frac{\partial z}{\partial\eta} & \frac{\partial z}{\partial\zeta}\end{array}\right]$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+\begin_inset Formula $\begin{array}{c}
+x\left(\vec{\xi}\right)=\sum_{i}N_{i}\left(\vec{\xi}\right)x_{i}\\
+y\left(\vec{\xi}\right)=\sum_{i}N_{i}\left(\vec{\xi}\right)y_{i}\\
+z\left(\vec{\xi}\right)=\sum_{i}N_{i}\left(\vec{\xi}\right)z_{i}\end{array}$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \[
+\frac{\partial x}{\partial\xi}=\sum_{i}\frac{\partial N_{i}}{\partial\xi}x_{i}\,\,\,\,\,\,,\,\,\,\frac{\partial x}{\partial\eta}=\sum_{i}\frac{\partial N_{i}}{\partial\eta}x_{i}\,\,\,\,\,\,,\,\,\,\frac{\partial x}{\partial\zeta}=\sum_{i}\frac{\partial N_{i}}{\partial\zeta}x_{i}\]
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \[
+\frac{\partial y}{\partial\xi}=\sum_{i}\frac{\partial N_{i}}{\partial\xi}y_{i}\,\,\,\,\,\,,\,\,\,\frac{\partial y}{\partial\eta}=\sum_{i}\frac{\partial N_{i}}{\partial\eta}y_{i}\,\,\,\,\,\,,\,\,\,\frac{\partial y}{\partial\zeta}=\sum_{i}\frac{\partial N_{i}}{\partial\zeta}y_{i}\]
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \[
+\frac{\partial z}{\partial\xi}=\sum_{i}\frac{\partial N_{i}}{\partial\xi}z_{i}\,\,\,\,\,\,,\,\,\,\frac{\partial z}{\partial\eta}=\sum_{i}\frac{\partial N_{i}}{\partial\eta}z_{i}\,\,\,\,\,\,,\,\,\,\frac{\partial z}{\partial\zeta}=\sum_{i}\frac{\partial N_{i}}{\partial\zeta}z_{i}\]
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+
+\end_layout
+
+\begin_layout Standard
+Applying these to our shape functions on a tetrahedron, we obtain
+\end_layout
+
+\begin_layout Standard
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Tabular
+<lyxtabular version="3" rows="5" columns="5">
+<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" 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
+\begin_inset Formula $i$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+\begin_inset Formula $TN_{i}$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+\begin_inset Formula $\partial TN_{i}/\partial\xi$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+\begin_inset Formula $\partial TN_{i}/\partial\eta$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+\begin_inset Formula $\partial TN_{i}/\partial\zeta$
+\end_inset
+
+
+\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
+0
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+\begin_inset Formula $\frac{1}{2}\left(-1-\xi-\eta-\zeta\right)$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+\begin_inset Formula $-\frac{1}{2}$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+\begin_inset Formula $-\frac{1}{2}$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+\begin_inset Formula $-\frac{1}{2}$
+\end_inset
+
+
+\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
+1
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+\begin_inset Formula $\frac{1}{2}\left(1+\xi\right)$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+\begin_inset Formula $+\frac{1}{2}$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+0
+\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
+\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
+2
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+\begin_inset Formula $\frac{1}{2}\left(1+\eta\right)$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+0
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+\begin_inset Formula $+\frac{1}{2}$
+\end_inset
+
+
+\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
+\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
+3
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+\begin_inset Formula $\frac{1}{2}\left(1+\zeta\right)$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+0
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+0
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Standard
+\begin_inset Formula $+\frac{1}{2}$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \[
+\frac{\partial x}{\partial\xi}=\left(-\frac{1}{2}\right)x_{0}+\left(\frac{1}{2}\right)x_{1}\,\,\,,\,\,\,\frac{\partial x}{\partial\eta}=\left(-\frac{1}{2}\right)x_{0}+\left(\frac{1}{2}\right)x_{2}\,\,\,,\,\,\,\frac{\partial x}{\partial\zeta}=\left(-\frac{1}{2}\right)x_{0}+\left(\frac{1}{2}\right)x_{3}\]
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \[
+\frac{\partial y}{\partial\xi}=\left(-\frac{1}{2}\right)y_{0}+\left(\frac{1}{2}\right)y_{1}\,\,\,,\,\,\,\frac{\partial y}{\partial\eta}=\left(-\frac{1}{2}\right)y_{0}+\left(\frac{1}{2}\right)y_{2}\,\,\,,\,\,\,\frac{\partial y}{\partial\zeta}=\left(-\frac{1}{2}\right)y_{0}+\left(\frac{1}{2}\right)y_{3}\]
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \[
+\frac{\partial z}{\partial\xi}=\left(-\frac{1}{2}\right)z_{0}+\left(\frac{1}{2}\right)z_{1}\,\,\,,\,\,\,\frac{\partial z}{\partial\eta}=\left(-\frac{1}{2}\right)z_{0}+\left(\frac{1}{2}\right)z_{2}\,\,\,,\,\,\,\frac{\partial z}{\partial\zeta}=\left(-\frac{1}{2}\right)z_{0}+\left(\frac{1}{2}\right)z_{3}\]
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \[
+\mathrm{J}=\left|\frac{\partial\vec{x}}{\partial\vec{\xi}}\right|=\left|\begin{array}{c}
+\frac{1}{2}\left(x_{1}-x_{0}\right)\,\,\frac{1}{2}\left(x_{2}-x_{0}\right)\,\,\frac{1}{2}\left(x_{3}-x_{0}\right)\\
+\frac{1}{2}\left(y_{1}-y_{0}\right)\,\,\frac{1}{2}\left(y_{2}-y_{0}\right)\,\,\frac{1}{2}\left(y_{3}-y_{0}\right)\\
+\frac{1}{2}\left(z_{1}-z_{0}\right)\,\,\frac{1}{2}\left(z_{2}-z_{0}\right)\,\,\frac{1}{2}\left(z_{3}-z_{0}\right)\end{array}\right|\]
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \[
+=\frac{1}{8}\left|\begin{array}{cccc}
+1 & x_{0} & y_{0} & z_{0}\\
+1 & x_{1} & y_{1} & z_{1}\\
+1 & x_{2} & y_{2} & z_{2}\\
+1 & x_{3} & y_{3} & z_{3}\end{array}\right|\]
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+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 Standard
+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 Standard
+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 "modificat
+ion.") 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 Standard
+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 Standard
+END OF TERMS AND CONDITIONS 
+\end_layout
+
+\begin_layout Standard
+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 Standard
+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 Standard
+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 Standard
+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 Standard
+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 Standard
+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 Standard
+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 Standard
+(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 "Akin 2005"
+
+\end_inset
+
+Akin, J.E.
+ (2005), 
+\emph on
+Finite Element Analysis with Error Estimators,
+\emph default
+ Butterworth-Heinemann, Oxford, 447 pp.
+ 
+\end_layout
+
+\begin_layout Bibliography
+\begin_inset LatexCommand bibitem
+label "2"
+key "Encyclopaedia of Cubature Formulas 2005"
+
+\end_inset
+
+Encyclopaedia of Cubature Formulas (1998-2005), Katholieke Universiteit
+ Leuven, Dept.
+ Computerwetenschappen, www.cs.kuleuven.be/~nines/research/ecf/
+\end_layout
+
+\begin_layout Bibliography
+\begin_inset LatexCommand bibitem
+label "3"
+key "Hughes 2000"
+
+\end_inset
+
+Hughes, Thomas J.R.
+ (2000), 
+\emph on
+The Finite Element Method: Linear Static and Dynamic Finite Element Analysis
+\emph default
+, Dover, 672 pp.
+\end_layout
+
+\begin_layout Bibliography
+\begin_inset LatexCommand bibitem
+label "4"
+key "KarniadakisSherwin2005"
+
+\end_inset
+
+Karniadakis, George E.
+ and Spencer J.
+ Sherwin (2005), 
+\emph on
+Spectral/
+\emph default
+hp 
+\emph on
+Element Methods for Computational Fluid Dynamics, Second Edition
+\emph default
+, Numerical Mathematics and Scientific Computation, Oxford, 657 pp.
+\end_layout
+
+\begin_layout Bibliography
+\begin_inset LatexCommand bibitem
+label "5"
+key "Uesu-etal2005"
+
+\end_inset
+
+Uesu, D., L.
+ Bavoil, S.
+ Fleishman, J.
+ Shepherd, and C.
+ Silva (2005), Simplification of Unstructured Tetrahedral Meshes by Point-Sampli
+ng, 
+\emph on
+Proceedings of the 2005 International Workshop on Volume Graphics,
+\emph default
+ 157-165, doi: 10.2312/VG/VG05/157-165.
+\end_layout
+
+\end_body
+\end_document


Property changes on: doc/cigma/manual/cigma-win.lyx
___________________________________________________________________
Name: svn:executable
   + *



More information about the cig-commits mailing list