[cig-commits] r7115 - cs/cigma/trunk/doc/manual

luis at geodynamics.org luis at geodynamics.org
Fri Jun 8 16:03:39 PDT 2007


Author: luis
Date: 2007-06-08 16:03:38 -0700 (Fri, 08 Jun 2007)
New Revision: 7115

Modified:
   cs/cigma/trunk/doc/manual/cigma.lyx
Log:
Added chapter on command-line usage.


Modified: cs/cigma/trunk/doc/manual/cigma.lyx
===================================================================
--- cs/cigma/trunk/doc/manual/cigma.lyx	2007-06-08 22:53:00 UTC (rev 7114)
+++ cs/cigma/trunk/doc/manual/cigma.lyx	2007-06-08 23:03:38 UTC (rev 7115)
@@ -1,4 +1,4 @@
-#LyX 1.4.3 created this file. For more info see http://www.lyx.org/
+#LyX 1.4.4 created this file. For more info see http://www.lyx.org/
 \lyxformat 245
 \begin_document
 \begin_header
@@ -134,9 +134,11 @@
 \end_layout
 
 \begin_layout Standard
-The CIG Model Analyzer (CIGMA) is a suite of tools intended to simplify
- the process of comparing numerical solutions.
- CIG has developed CIGMA in response to community demand by __???___.
+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, who desired for a simple tool for performing rigorous error
+ analysis on their FEM codes.
  The code is being released under the GNU General Public License.
 \end_layout
 
@@ -145,43 +147,11 @@
 \end_layout
 
 \begin_layout Standard
-TODO: Should we adapt the following or remove it altogether? 
-\end_layout
-
-\begin_layout Standard
 Computational Infrastructure for Geodynamics (CIG) is making this source
  code available to you in the hope that the software will enhance your research
  in geophysics.
- A number of individuals have contributed a significant portion of their
- careers toward the development of Gale.
- It is essential that you recognize these individuals in the normal scientific
- practice by making appropriate acknowledgements.
- 
-\end_layout
-
-\begin_layout Standard
-The code is based on the method described in 
-\end_layout
-
-\begin_layout Itemize
-Moresi, L.N., F.
- Dufour, and H.-B.
- Mühlhaus (2003), A Lagrangian integration point finite element method for
- large deformation modeling of viscoelastic geomaterials, 
-\emph on
-J.
- Comp.
- Phys., 184
-\series bold
-,
-\series default
-\emph default
- 476-497.
- 
-\end_layout
-
-\begin_layout Standard
-CIG requests that in your oral presentations and in your papers that you
+ (TODO: Use this manual for the citation?).
+ CIG requests that in your oral presentations and in your papers that you
  indicate your use of this code and acknowledge the authors of the code
  and 
 \begin_inset LatexCommand \htmlurl[CIG]{www.geodynamics.org}
@@ -198,296 +168,246 @@
 \begin_layout Standard
 CIGMA development is supported by a grant from the National Science Foundation
  to CIG, managed by the California Institute of Technology.
- 
 \end_layout
 
 \begin_layout Chapter
-Numerical Methods
+Installation and Getting Help
 \end_layout
 
-\begin_layout Chapter
-Implementation
-\end_layout
-
-\begin_layout Chapter
-Components
-\end_layout
-
 \begin_layout Section
-Design Goals
+Introduction
 \end_layout
 
 \begin_layout Standard
-CIGMA was developed with the following design goals in mind:
+(TODO: this chapter is short.
+ merge chapters 1 & 2?)
 \end_layout
 
 \begin_layout Standard
-TODO
+To use CIGMA, download the source package (in the form of a compressed tar
+ file) from the Geodynamics Software Packages web page (geodynamics.org/cig/softw
+are/packages).
+ After unpacking the source, use the following commands
 \end_layout
 
-\begin_layout Section
-Object Registry
+\begin_layout LyX-Code
+$ ./configure
 \end_layout
 
-\begin_layout Standard
-To reduce the number of command-line options you need to specify, CIGMA
- will remember objects you have referenced in the past.
- This information will be kept in the following database
+\begin_layout LyX-Code
+$ make
 \end_layout
 
 \begin_layout LyX-Code
-$HOME/.cigma/registry.db 
+$ make install
 \end_layout
 
-\begin_layout Standard
-If this file does not exist, it will be created whenever you attempt to
- register a particular object.
+\begin_layout Section
+Getting Help
 \end_layout
 
 \begin_layout Standard
-The following objects can be registered in the database
+For help, send an e-mail to the CIG Computational Science Mailing List (cig-cs at g
+eodynamics.org).
+ You can subscribe to the Mailing List and view archived discussions at
+ the Geodynamics Mail Lists web page (www.geodynamics.org/cig/lists).
+ If you encounter any bugs, or have any problems installing CIGMA, please
+ consider submitting a report to the Geodynamics Issue Tracker located at
+ (www.geodynamics.org/bugs).
 \end_layout
 
-\begin_layout Itemize
-models
+\begin_layout Chapter
+Numerical Background
 \end_layout
 
-\begin_layout Itemize
-meshes
+\begin_layout Standard
+A field assigns a physical quantity to every point in space.
+ This physical quantity is described mathematically as a scalar, a vector,
+ or even a tensor.
+ 
 \end_layout
 
-\begin_layout Itemize
-rules
+\begin_layout Standard
+Estimating errors between two arbitrarily represented fields is be challenging
+ due to the variety of representations that are possible.
+ With ...
 \end_layout
 
-\begin_layout Itemize
-fields
+\begin_layout Standard
+(TODO: move some of the images/material from appendix into this section)
 \end_layout
 
-\begin_layout Itemize
-elements
-\end_layout
-
-\begin_layout Section
-Model Metadata
-\end_layout
-
 \begin_layout Standard
-Each model keeps a certain amount of metadata.
- The following HDF5 attributes are defined:
+(TODO: discussion of error aliasing that arises from undersampling the integrand
+)
 \end_layout
 
-\begin_layout Itemize
-uuid - unique id for 
+\begin_layout Chapter
+Software Components
 \end_layout
 
-\begin_layout Itemize
-mesh_id
-\end_layout
-
 \begin_layout Section
-FE Metadata
+Design Goals
 \end_layout
 
 \begin_layout Standard
-In order to accept a general finite element space, 
+CIGMA was developed with the following use cases in mind
 \end_layout
 
-\begin_layout LyX-Code
-struct fe_space {
+\begin_layout Itemize
+...
 \end_layout
 
-\begin_layout LyX-Code
-int nsd;
+\begin_layout Section
+Components
 \end_layout
 
-\begin_layout LyX-Code
-int ndim;
+\begin_layout Itemize
+models
 \end_layout
 
-\begin_layout LyX-Code
-int ndof;
+\begin_layout Itemize
+meshes
 \end_layout
 
-\begin_layout LyX-Code
-shape_fn *N;
+\begin_layout Itemize
+rules
 \end_layout
 
-\begin_layout LyX-Code
-shape_fn *dN;
+\begin_layout Itemize
+fields
 \end_layout
 
-\begin_layout LyX-Code
-};
+\begin_layout Itemize
+points
 \end_layout
 
-\begin_layout LyX-Code
-
+\begin_layout Section
+Data Format
 \end_layout
 
-\begin_layout LyX-Code
-void fe_init();
-\end_layout
-
-\begin_layout LyX-Code
-void fe_jacobian(fe_space *fe, double *x, double *xi, double *J);
-\end_layout
-
-\begin_layout LyX-Code
-void fe_tabulate(fe_space *fe, double *xs, double npts, double *tab);
-\end_layout
-
-\begin_layout LyX-Code
-void fe_eval(fe_space *fe, double *dof, double *xi, double *val);
-\end_layout
-
-\begin_layout LyX-Code
-void fe_batch_eval(fe_space *fe, double *dof, double *tab, int npts, double
- *vals);
-\end_layout
-
 \begin_layout Standard
-There are two builtin finite element spaces called tet4 and hex8.
- The rest can be loaded dynamically from the following directories
+We use HDF5 for the following reasons
 \end_layout
 
-\begin_layout LyX-Code
-$HOME/.cigma/fe/
+\begin_layout Enumerate
+A common format is necessary for comparisons in order to avoid having to
+ convert between formats
 \end_layout
 
-\begin_layout LyX-Code
-/etc/cigma/fe/
+\begin_layout Enumerate
+In order to support large finite element meshes efficiently
 \end_layout
 
 \begin_layout Standard
-If you specify a function space called foo, cigma will search for libfoo.so
- in the above directories, and call foo_init() to initialize any required
- parameters
+(TODO: yank part of intro-to-hdf5 chapter from CitcomS manual)
 \end_layout
 
 \begin_layout Section
-Analytic Solutions
+Model Metadata
 \end_layout
 
-\begin_layout LyX-Code
-struct fn_space {
+\begin_layout Standard
+Each model keeps a certain amount of metadata.
+ The following HDF5 attributes are defined:
 \end_layout
 
-\begin_layout LyX-Code
-    int nsd;
+\begin_layout Itemize
+uuid - unique id for 
 \end_layout
 
-\begin_layout LyX-Code
-    int ndim;
+\begin_layout Itemize
+mesh_id
 \end_layout
 
-\begin_layout LyX-Code
-    eval_t *call;
+\begin_layout Itemize
+...
 \end_layout
 
-\begin_layout LyX-Code
-    eval_t *batch_call;
+\begin_layout Chapter
+Running CIGMA
 \end_layout
 
-\begin_layout LyX-Code
-};
+\begin_layout Standard
+The data flow in CIGMA is decoupled to the extent.
+ 
 \end_layout
 
-\begin_layout LyX-Code
-
+\begin_layout Section
+Internal Object Registry
 \end_layout
 
-\begin_layout LyX-Code
-void fn_init();
+\begin_layout Standard
+In order to reduce the number of command-line options you need to specify,
+ CIGMA will remember any objects you have already referenced.
+ This information is kept in the following database
 \end_layout
 
 \begin_layout LyX-Code
-void fn_eval(fn_space *fn, double *x, double *val);
+$HOME/.cigma/registry.db
 \end_layout
 
-\begin_layout LyX-Code
-void fn_batch_eval(fn_space *fn, double *xs, int npts, double *vals);
+\begin_layout Standard
+If this file does not exist, it will be created whenever you attempt to
+ access a particular object.
+ 
 \end_layout
 
-\begin_layout LyX-Code
-void fn_fini();
-\end_layout
-
-\begin_layout LyX-Code
-
-\end_layout
-
-\begin_layout LyX-Code
-Function
-\end_layout
-
 \begin_layout Section
 Available Commands
 \end_layout
 
-\begin_layout Subsection
+\begin_layout Subsubsection*
 Principal Commands
 \end_layout
 
 \begin_layout Description
-create -
+create - Creates an empty model
 \end_layout
 
 \begin_layout Description
-import -
+import - Imports datasets into model
 \end_layout
 
 \begin_layout Description
-extract -
+extract - Extracts a common set of points for comparison
 \end_layout
 
 \begin_layout Description
-eval -
+eval - Evaluates field over a set of points
 \end_layout
 
 \begin_layout Description
-diff -
+project - Transforms one field into another field
 \end_layout
 
 \begin_layout Description
-project -
+compare - Compares two fields
 \end_layout
 
-\begin_layout Subsection
+\begin_layout Subsubsection*
 Auxiliary Commands
 \end_layout
 
 \begin_layout Description
-cube - simple discretization of the unit cube
+cube - Provides a simple discretization of the unit cube, for testing
 \end_layout
 
 \begin_layout Description
-rule - rules
+rules - Queries internal database for known quadrature rules
 \end_layout
 
 \begin_layout Description
-mesh - querying the database
+meshes - Queries internal database for known mesh objects
 \end_layout
 
-\begin_layout Description
-index - updating index
-\end_layout
-
-\begin_layout Description
-shell - shell
-\end_layout
-
-\begin_layout Section
-Command Line Usage
-\end_layout
-
 \begin_layout Subsection
 Creating a new model
 \end_layout
 
-\begin_layout Paragraph*
+\begin_layout LyX-Code
 
-\family typewriter
+\series bold
 cigma create model.h5:/model
 \end_layout
 
@@ -513,7 +433,7 @@
 \end_layout
 
 \begin_layout LyX-Code
-      `-- variables
+     `-- variables
 \end_layout
 
 \begin_layout Standard
@@ -521,15 +441,31 @@
 \end_layout
 
 \begin_layout Subsection
-Importing the node coordinates
+Importing node coordinates
 \end_layout
 
-\begin_layout Paragraph*
+\begin_layout LyX-Code
 
-\family typewriter
-cigma import --coordinates --input=file --output=model.h5:/model
+\series bold
+cigma import --coordinates 
+\backslash
+
 \end_layout
 
+\begin_layout LyX-Code
+
+\series bold
+             --input=file  
+\backslash
+
+\end_layout
+
+\begin_layout LyX-Code
+
+\series bold
+             --output=model.h5:/model
+\end_layout
+
 \begin_layout Standard
 The effect of this command is to create the following dataset
 \end_layout
@@ -551,15 +487,31 @@
 \end_layout
 
 \begin_layout Subsection
-Importing the node connectivity
+Importing node connectivity information
 \end_layout
 
-\begin_layout Paragraph*
+\begin_layout LyX-Code
 
-\family typewriter
-cigma import --connectivity --input=file --output=model.h5:/model
+\series bold
+cigma import --connectivity  
+\backslash
+
 \end_layout
 
+\begin_layout LyX-Code
+
+\series bold
+             --input=file    
+\backslash
+
+\end_layout
+
+\begin_layout LyX-Code
+
+\series bold
+             --output=model.h5:/model
+\end_layout
+
 \begin_layout Standard
 The effect of this command is to create the following dataset
 \end_layout
@@ -584,12 +536,28 @@
 Importing field data
 \end_layout
 
-\begin_layout Paragraph
+\begin_layout LyX-Code
 
-\family typewriter
-cigma import --variable=velocity/0 --input=file --output=model.h5:/model
+\series bold
+cigma import --variable=velocity/0     
+\backslash
+
 \end_layout
 
+\begin_layout LyX-Code
+
+\series bold
+             --input=file              
+\backslash
+
+\end_layout
+
+\begin_layout LyX-Code
+
+\series bold
+             --output=model.h5:/model
+\end_layout
+
 \begin_layout Standard
 The above command reads the input file and creates the following groups
  and datasets
@@ -628,40 +596,127 @@
 \end_layout
 
 \begin_layout Subsection
-Extracting integration points
+Creating a sample mesh
 \end_layout
 
-\begin_layout Paragraph*
+\begin_layout LyX-Code
 
-\family typewriter
-cigma extract --rule=qr.h5:/path/to/rule --input=model.h5:/model --output=points.h5
-:/points --elements=10000
+\series bold
+cigma cube [ -t | -h ] file.h5
 \end_layout
 
 \begin_layout Standard
+The above command can create two kinds of meshes inside the file.h5, each
+ representing two different discretizations of the unit cube.
+\end_layout
+
+\begin_layout LyX-Code
+file.h5
+\end_layout
+
+\begin_layout LyX-Code
+|-- <cube-coordinates> [nno x 3]
+\end_layout
+
+\begin_layout LyX-Code
+|-- tetmodel
+\end_layout
+
+\begin_layout LyX-Code
+|   `-- mesh
+\end_layout
+
+\begin_layout LyX-Code
+|      |-- coordinates (symlink)
+\end_layout
+
+\begin_layout LyX-Code
+|      `-- connectivity [nel x 4]
+\end_layout
+
+\begin_layout LyX-Code
+`-- hexmodel
+\end_layout
+
+\begin_layout LyX-Code
+    `-- mesh
+\end_layout
+
+\begin_layout LyX-Code
+        |-- coordinates (symlink)
+\end_layout
+
+\begin_layout LyX-Code
+        `-- connectivity [nel x 8]
+\end_layout
+
+\begin_layout Standard
+Note that the field information is still missing from this model.
+\end_layout
+
+\begin_layout Subsection
+Extracting set of integration points
+\end_layout
+
+\begin_layout LyX-Code
+
+\series bold
+cigma extract --rule=qr.h5:/path/to/rule    
+\backslash
+
+\end_layout
+
+\begin_layout LyX-Code
+
+\series bold
+              --input=model.h5:/model       
+\backslash
+
+\end_layout
+
+\begin_layout LyX-Code
+
+\series bold
+              --output=points.h5:/points    
+\backslash
+
+\end_layout
+
+\begin_layout LyX-Code
+
+\series bold
+              --elements=10000
+\end_layout
+
+\begin_layout Standard
 Given a quadrature rule and a mesh, we can map the quadrature points on
  each reference element onto the actual domain and use these as a set of
  common points on which to perform future comparisons.
 \end_layout
 
 \begin_layout Standard
-Memory usage can be controlled by using the --elements argument.
+Memory usage can be controlled by providing an appropriate argument to the
+ --elements command line option.
 \end_layout
 
 \begin_layout Subsection
-Extracting random set of points
+Extracting a random set of points
 \end_layout
 
 \begin_layout LyX-Code
 
 \series bold
-cigma extract --random 
+cigma extract --random                          
+\backslash
+
 \end_layout
 
 \begin_layout LyX-Code
 
 \series bold
-              --input=/path/to/model.h5:/model 
+              --input=/path/to/model.h5:/model  
+\backslash
+
 \end_layout
 
 \begin_layout LyX-Code
@@ -679,13 +734,28 @@
 Evaluating a field on its quadrature points
 \end_layout
 
-\begin_layout Paragraph*
+\begin_layout LyX-Code
 
-\family typewriter
-cigma eval --field=model.h5:/model/variables/velocity/0 --rule=qr.h5:/rule
- --output=values.h5
+\series bold
+cigma eval --field=model.h5:/model/variables/velocity/0  
+\backslash
+
 \end_layout
 
+\begin_layout LyX-Code
+
+\series bold
+           --rule=qr.h5:/rule                            
+\backslash
+
+\end_layout
+
+\begin_layout LyX-Code
+
+\series bold
+           --output=values.h5
+\end_layout
+
 \begin_layout Standard
 Given a finite element field and a quadrature rule, this command extracts
  the required quadrature
@@ -699,119 +769,383 @@
 Evaluating a field on a given set of points
 \end_layout
 
-\begin_layout Paragraph*
+\begin_layout LyX-Code
 
-\family typewriter
-cigma eval --field=model.h5:/model/variables/velocity/0 --input=points.h5:/points
- --output=values.h5
+\series bold
+cigma eval --field=model.h5:/model/variables/velocity/0  
+\backslash
+
 \end_layout
 
+\begin_layout LyX-Code
+
+\series bold
+           --input=points.h5:/points                     
+\backslash
+
+\end_layout
+
+\begin_layout LyX-Code
+
+\series bold
+           --output=values.h5
+\end_layout
+
 \begin_layout Standard
 Given a finite element field and a common set of points, 
 \end_layout
 
 \begin_layout Subsection
-Evalutating an external function on a set of points
+Evalutating an external field on given set of points
 \end_layout
 
-\begin_layout Paragraph*
+\begin_layout LyX-Code
 
-\family typewriter
-cigma eval --field=/path/to/libfoo.so --input=model.h5:/model --output=file.h5
+\series bold
+cigma eval --field=/path/to/libfoo.so    
+\backslash
+
 \end_layout
 
+\begin_layout LyX-Code
+
+\series bold
+           --input=model.h5:/model       
+\backslash
+   
+\end_layout
+
+\begin_layout LyX-Code
+
+\series bold
+           --output=values.h5
+\end_layout
+
 \begin_layout Standard
 If we know that our field has an analytic function representation, 
 \end_layout
 
 \begin_layout Subsection
-Compare two fields
+Comparing two fields
 \end_layout
 
 \begin_layout LyX-Code
-cigma diff --first=field1.h5:/displacement/0 --second=field2.h5:/displacement/0
+
+\series bold
+cigma compare --first=values1.h5  
+\backslash
+
 \end_layout
 
 \begin_layout LyX-Code
 
+\series bold
+              --second=values2.h5 
+\backslash
+
 \end_layout
 
 \begin_layout LyX-Code
-cigma diff --first=model1.h5:/model/variables/velocity/0 --second=model2.h5:/model
-/variables/velocity/0
+
+\series bold
+              --output=errors.h5
 \end_layout
 
-\begin_layout Subsection
-Create a sample mesh
+\begin_layout LyX-Code
+
 \end_layout
 
-\begin_layout Paragraph*
+\begin_layout LyX-Code
 
-\family typewriter
-cigma cube file.h5
+\series bold
+cigma compare --first=field1.h5:/displ/0  
+\backslash
+
 \end_layout
 
-\begin_layout Standard
-Creates two models inside the file.h5
+\begin_layout LyX-Code
+
+\series bold
+              --second=field2.h5:/displ/0 
+\backslash
+
 \end_layout
 
 \begin_layout LyX-Code
-file.h5
+
+\series bold
+              --output=errors.h5
 \end_layout
 
 \begin_layout LyX-Code
-|-- <cube-coordinates> [nno x 3]
+
 \end_layout
 
 \begin_layout LyX-Code
-|-- tetmodel
+
+\series bold
+cigma compare --first=field1.h5:/field/3 
+\backslash
+
 \end_layout
 
 \begin_layout LyX-Code
-|   `-- mesh
+
+\series bold
+              --second=/lib/libfoo.so    
+\backslash
+
 \end_layout
 
 \begin_layout LyX-Code
-|      |-- coordinates (symlink)
+
+\series bold
+              --output=errors.h5
 \end_layout
 
 \begin_layout LyX-Code
-|      `-- connectivity [nel x 4]
+
 \end_layout
 
 \begin_layout LyX-Code
-`-- hexmodel
+
+\series bold
+cigma compare --first=model1.h5:/model/variables/velo/0  
+\backslash
+
 \end_layout
 
 \begin_layout LyX-Code
-    `-- mesh
+
+\series bold
+              --second=model2.h5:/model/variables/velo/0 
+\backslash
+
 \end_layout
 
 \begin_layout LyX-Code
-        |-- coordinates (symlink)
+
+\series bold
+              --output=errors.h5
 \end_layout
 
 \begin_layout LyX-Code
-        `-- connectivity [nel x 8]
+
 \end_layout
 
+\begin_layout Standard
+Finally, the compare command can take a variety of representations.
+ Based on the metadata defined by each object, we ...
+\end_layout
+
+\begin_layout Section
+Data Flow
+\end_layout
+
+\begin_layout Standard
+(TODO: Insert cigma-meshA-diagram.jpg here)
+\end_layout
+
 \begin_layout Chapter
 Numerical Results
 \end_layout
 
 \begin_layout Section
-Unit Cube and Verification
+Refinement Study on Unit Cube
 \end_layout
 
+\begin_layout Standard
+Two studies:
+\end_layout
+
+\begin_layout Standard
+(Compare h-refinement vs.
+ p-refinement on discretized cube)
+\end_layout
+
+\begin_layout Standard
+(Deduce order of convergence from sequence of global errors)
+\end_layout
+
 \begin_layout Section
-Complex Geometries
+Benchmark Study
 \end_layout
 
+\begin_layout Standard
+(Description: Here, include comparison of two different models -- PyLith
+ vs.
+ GeoFEST on different element types)
+\end_layout
+
 \begin_layout Section
+Okada Analytic Code
+\end_layout
+
+\begin_layout Standard
+(Description: Here, include comparison a field against the okada benchmark
+ code in the svn repository)
+\end_layout
+
+\begin_layout Section
 Performance
 \end_layout
 
+\begin_layout Standard
+(Description: analysis of time-complexity for a given resolution mesh.
+ provide measurements of space-complexity as well.
+ Mention spatial databases here? i.e., the need to index the location of each
+ element in order to speed up spatial queries)
+\end_layout
+
 \begin_layout Chapter
+C Library API
+\end_layout
+
+\begin_layout Section
+Using Higher Order Shape Functions
+\end_layout
+
+\begin_layout Standard
+In order to accept a general finite element space, 
+\end_layout
+
+\begin_layout LyX-Code
+struct fe_space {
+\end_layout
+
+\begin_layout LyX-Code
+int nsd;
+\end_layout
+
+\begin_layout LyX-Code
+int ndim;
+\end_layout
+
+\begin_layout LyX-Code
+int ndof;
+\end_layout
+
+\begin_layout LyX-Code
+shape_fn *N;
+\end_layout
+
+\begin_layout LyX-Code
+shape_fn *dN;
+\end_layout
+
+\begin_layout LyX-Code
+};
+\end_layout
+
+\begin_layout LyX-Code
+
+\end_layout
+
+\begin_layout LyX-Code
+void fe_init();
+\end_layout
+
+\begin_layout LyX-Code
+void fe_jacobian(fe_space *fe, double *x, double *xi, double *J);
+\end_layout
+
+\begin_layout LyX-Code
+void fe_tabulate(fe_space *fe, double *xs, double npts, double *tab);
+\end_layout
+
+\begin_layout LyX-Code
+void fe_eval(fe_space *fe, double *dof, double *xi, double *val);
+\end_layout
+
+\begin_layout LyX-Code
+void fe_batch_eval(fe_space *fe, double *dof, double *tab, int npts, double
+ *vals);
+\end_layout
+
+\begin_layout Standard
+There are two builtin finite element spaces called tet4 and hex8.
+ The rest can be loaded dynamically from the following directories
+\end_layout
+
+\begin_layout LyX-Code
+$HOME/.cigma/fe/
+\end_layout
+
+\begin_layout LyX-Code
+/etc/cigma/fe/
+\end_layout
+
+\begin_layout Standard
+If you specify a function space called foo, cigma will search for libfoo.so
+ in the above directories, and call foo_init() to initialize any required
+ parameters
+\end_layout
+
+\begin_layout Section
+Comparing against an Analytic Solution
+\end_layout
+
+\begin_layout LyX-Code
+struct fn_space {
+\end_layout
+
+\begin_layout LyX-Code
+    int nsd;
+\end_layout
+
+\begin_layout LyX-Code
+    int ndim;
+\end_layout
+
+\begin_layout LyX-Code
+    eval_t *call;
+\end_layout
+
+\begin_layout LyX-Code
+    eval_t *batch_call;
+\end_layout
+
+\begin_layout LyX-Code
+};
+\end_layout
+
+\begin_layout LyX-Code
+
+\end_layout
+
+\begin_layout Standard
+The following functions are defined
+\end_layout
+
+\begin_layout LyX-Code
+
+\end_layout
+
+\begin_layout LyX-Code
+void fn_init();
+\end_layout
+
+\begin_layout LyX-Code
+void fn_eval(fn_space *fn, double *x, double *val);
+\end_layout
+
+\begin_layout LyX-Code
+void fn_batch_eval(fn_space *fn, double *xs, int npts, double *vals);
+\end_layout
+
+\begin_layout LyX-Code
+void fn_fini();
+\end_layout
+
+\begin_layout LyX-Code
+
+\end_layout
+
+\begin_layout LyX-Code
+
+\end_layout
+
+\begin_layout Chapter
 \start_of_appendix
 Text Input File Formats
 \end_layout
@@ -909,7 +1243,7 @@
 status open
 
 \begin_layout Caption
-deal.II
+Linear Hexahedral Element
 \end_layout
 
 \begin_layout Standard
@@ -2549,16 +2883,115 @@
 \end_layout
 
 \begin_layout Chapter
-\begin_inset Formula $ $
+Quadrature Rules
+\end_layout
+
+\begin_layout Standard
+\noindent
+\begin_inset Graphics
+	filename quadrature-rule-diagram.jpg
+	lyxscale 25
+	scale 25
+	rotateOrigin leftBottom
+
 \end_inset
 
+
+\begin_inset Formula \[
+\varphi_{K}^{e}\left(\vec{x}\left(\vec{\xi}\right)\right)\]
+
+\end_inset
+
+set of points 
+\begin_inset Formula $\vec{q}_{i}$
+\end_inset
+
+ \InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+\InsetSpace ~
+
+\begin_inset Formula $Q=\left\{ 1,\,\ldots\,,\left|Q\right|\right\} $
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\noindent
+set of weights 
+\begin_inset Formula $w_{1}$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\noindent
+quadrature rule of degree 
+\begin_inset Formula $\left|Q\right|$
+\end_inset
+
+ \InsetSpace ~
+(
+\begin_inset Formula $\left|Q\right|^{d}$
+\end_inset
+
+ points and weights)
+\end_layout
+
+\begin_layout LyX-Code
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \[
+F\left(\xi\right),\rightarrow\int_{K_{ref}}\,\, F\left(\vec{\xi}\right)d\vec{\xi}=\begin{array}{c}
+\intop\intop\intop\\
+K_{ref}\end{array}\, F\left(\xi_{1},\xi_{2}\,,\xi_{3}\right)d\xi,\, d\xi_{2},\, d\xi_{3}\]
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \[
+=\sum_{i\epsilon Q}\, F\left(\vec{q}_{i}\right)\cdot w_{i}\]
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \[
+\int_{K_{e}}f\left(\vec{x}\right)d\vec{x}=\int_{K_{ref}}f\left(\vec{\xi}\right)\cdot\left|\mathrm{J^{-1}}\left(\vec{\xi}\right)\right|d\vec{\xi}\]
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula \[
+=\sum_{i\epsilon Q}\left(f\left(\vec{q}_{i}\right)\left|\mathrm{J^{-1}\left(\vec{q}_{i}\right)}\right|\right)\cdot w_{i}\]
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Chapter
 Benchmarks
 \end_layout
 
 \begin_layout Standard
-CIG has worked with Susanne Buiter at NGU to improve the benchmak specifications.
- Gale has been tested with relaxation of topography, extension, shortening,
- and subduction models.
+CIG has worked with
 \end_layout
 
 \begin_layout Chapter



More information about the cig-commits mailing list