[cig-commits] commit: Cleanup of notation (switch m and n subscripts).

Mercurial hg at geodynamics.org
Thu Sep 1 10:52:42 PDT 2011


changeset:   63:f2ae0c7c8915
tag:         tip
user:        Brad Aagaard <baagaard at usgs.gov>
date:        Thu Sep 01 10:52:38 2011 -0700
files:       faultRup.tex
description:
Cleanup of notation (switch m and n subscripts).


diff -r 32a982452b80 -r f2ae0c7c8915 faultRup.tex
--- a/faultRup.tex	Thu Sep 01 10:09:41 2011 -0700
+++ b/faultRup.tex	Thu Sep 01 10:52:38 2011 -0700
@@ -254,48 +254,48 @@ The rotation matrix $\tensor{R}_T$ is th
 $\tensor{R}$ and is composed of blocks that are the transpose of the
 corresponding blocks in $\tensor{R}$.
 
-We express the trial solution $\vec{u}$, weighting function
-$\vec{\phi}$, and Lagrange multipliers $\vec{l}$ as linear combinations
+We express the weighting function $\vec{\phi}$, trial solution
+$\vec{u}$, and Lagrange multipliers $\vec{l}$ as linear combinations
 of basis functions,
 \begin{gather}
-\vec{u} = \sum_{m} \vec{u}_m N_m, \\
-\vec{\phi} = \sum_{n} \vec{a}_n N_n, \\
+\vec{\phi} = \sum_{n} \vec{a}_m N_m, \\
+\vec{u} = \sum_{m} \vec{u}_n N_n, \\
 \vec{l} = \sum_{p} \vec{l}_p N_p.
 \end{gather}
 Because the weighting function is zero on $S_u$, the number of basis
 functions for the trial solution $\vec{u}$ is generally greater than
 the number of basis functions for the weighting function $\vec{\phi}$,
-i.e., $m > n$. The basis functions for the Lagrange multipliers are
+i.e., $n > m$. The basis functions for the Lagrange multipliers are
 associated with the fault surface, which is a lower dimension than the
 domain, so $p \ll n$ in most cases. If we express the linear
 combination of basis functions in terms of a matrix-vector product, we
 have
 \begin{gather}
-\vec{u} = \tensor{N}_m \vec{u}_m, \\
-\vec{\phi} = \tensor{N}_n \vec{a}_n, \\
+\vec{\phi} = \tensor{N}_m \vec{a}_m, \\
+\vec{u} = \tensor{N}_n \vec{u}_n, \\
 \vec{l} = \tensor{N}_p \vec{l}_p.
 \end{gather}
 
 The weighting function is
-arbitrary, so the integrands must be zero for all $\vec{a}_n$, which
+arbitrary, so the integrands must be zero for all $\vec{a}_m$, which
 leads to
 \begin{gather}
-- \int_{V} \nabla \tensor{N}_n^T \cdot \tensor{\sigma} \, dV
-+ \int_{S_T} \tensor{N}_n^T \vec{T} \, dS
-+ \int_{S_f^{+}} \tensor{N}_n^T \tensor{N}_p \vec{l}_p \, dS
-- \int_{S_f^{-}} \tensor{N}_n^T \tensor{N}_p \vec{l}_p \, dS
-+ \int_{V} \tensor{N}_n^T \vec{f} \, dV
-- \int_{V} \rho \tensor{N}_n^T \tensor{N}_m \frac{\partial^2 \vec{u}_m}{\partial
+- \int_{V} \nabla \tensor{N}_m^T \cdot \tensor{\sigma} \, dV
++ \int_{S_T} \tensor{N}_m^T \vec{T} \, dS
++ \int_{S_f^{+}} \tensor{N}_m^T \tensor{N}_p \vec{l}_p \, dS
+- \int_{S_f^{-}} \tensor{N}_m^T \tensor{N}_p \vec{l}_p \, dS
++ \int_{V} \tensor{N}_m^T \vec{f} \, dV
+- \int_{V} \rho \tensor{N}_m^T \tensor{N}_n \frac{\partial^2 \vec{u}_n}{\partial
   t^2} \, dV
 =\vec{0}, \\
 %
   \int_{S_f} \tensor{N}_p^T 
   \left( \tensor{R}_T \vec{d} 
-    - \tensor{N}_{m^+} \vec{u}_{m^+} + \tensor{N}_{m^-} \vec{u}_{m^-}
+    - \tensor{N}_{n^+} \vec{u}_{n^+} + \tensor{N}_{n^-} \vec{u}_{n^-}
      \right)
   \, dS = \vec{0}.
 \end{gather}
-We want to solve these equations for the coefficients $\vec{u}_m$ and
+We want to solve these equations for the coefficients $\vec{u}_n$ and
 $\vec{l}_p$ subject to $\vec{u} = \vec{u}_0 \text{ on }S_u$.
 
 For nonlinear bulk rheologies it is convenient to work with the
@@ -315,18 +315,22 @@ and the loading conditions. Considering 
 and the loading conditions. Considering the deformation at time
 $\tpdt$,
 \begin{gather}
-\label{eqn:quasi-static:residual:domain}
-- \int_{V} \nabla \tensor{N}_n^T \cdot \tensor{\sigma}(\tpdt) \, dV
-+ \int_{S_T} \tensor{N}_n^T \vec{T}(\tpdt) \, dS
-+ \int_{S_f^{+}} \tensor{N}_n^T \tensor{N}_p \vec{l}_p(\tpdt) \, dS
-- \int_{S_f^{-}} \tensor{N}_n^T \tensor{N}_p \vec{l}_p(\tpdt) \, dS
-+ \int_{V} \tensor{N}_n^T \vec{f}(\tpdt) \, dV
-=\vec{0}, \\
+  \label{eqn:quasi-static:residual:domain}
+  \begin{split}
+    - \int_{V} \nabla \tensor{N}_m^T \cdot \tensor{\sigma}(\tpdt) \, dV
+    + \int_{S_T} \tensor{N}_m^T \vec{T}(\tpdt) \, dS
+    + \int_{S_f^{+}} \tensor{N}_m^T \tensor{N}_p \vec{l}_p(\tpdt) \, dS
+    - \int_{S_f^{-}} \tensor{N}_m^T \tensor{N}_p \vec{l}_p(\tpdt) \, dS
+    \\
+    + \int_{V} \tensor{N}_m^T \vec{f}(\tpdt) \, dV
+    =\vec{0},
+  \end{split}
+  \\
 %
 \label{eqn:quasi-static:residual:fault}
   \int_{S_f} \tensor{N}_p^T 
   \left( \tensor{R}_T \vec{d}(\tpdt)
-    - \tensor{N}_{m^+} \vec{u}_{m^+}(\tpdt) + \tensor{N}_{m^-} \vec{u}_{m^-}(\tpdt)
+    - \tensor{N}_{n^+} \vec{u}_{n^+}(\tpdt) + \tensor{N}_{n^-} \vec{u}_{n^-}(\tpdt)
     \right)
   \, dS = \vec{0}.
 \end{gather}
@@ -338,25 +342,25 @@ processing \cite{PETSc:web:page,PETSc:ma
 processing \cite{PETSc:web:page,PETSc:manual,PETSC:efficient}. In
 solving the system, we compute the residual (i.e., $\vec{r} = \vec{b}
 - \tensor{A} \vec{u}$ and the Jacobian of the system ($A$). In our
-case the solution is $\vec{u} = \left( \begin{smallmatrix} \vec{u}_m
-    \\ \vec{l}_m \end{smallmatrix} \right)$, and the residual is
+case the solution is $\vec{u} = \left( \begin{smallmatrix} \vec{u}_n
+    \\ \vec{l}_n \end{smallmatrix} \right)$, and the residual is
 simply the left hand sides of
 equations~(\ref{eqn:quasi-static:residual:domain})
 and~(\ref{eqn:quasi-static:residual:fault}). That is,
 \begin{equation}
 \vec{r} = \left( \begin{array}{c}
     \begin{aligned}
-      - \int_{V} \nabla \tensor{N}_n^T \cdot \tensor{\sigma}(\tpdt) \, dV
-      + \int_{S_T} \tensor{N}_n^T \vec{T}(\tpdt) \, dS
-      + \int_{S_f^{+}} \tensor{N}_n^T \tensor{N}_p \vec{l}_p(\tpdt) \, dS
-      &- \int_{S_f^{-}} \tensor{N}_n^T \tensor{N}_p \vec{l}_p(\tpdt) \, dS
+      - \int_{V} \nabla \tensor{N}_m^T \cdot \tensor{\sigma}(\tpdt) \, dV
+      + \int_{S_T} \tensor{N}_m^T \vec{T}(\tpdt) \, dS
+      + \int_{S_f^{+}} \tensor{N}_m^T \tensor{N}_p \vec{l}_p(\tpdt) \, dS
+      &- \int_{S_f^{-}} \tensor{N}_m^T \tensor{N}_p \vec{l}_p(\tpdt) \, dS
       \\
-      &+ \int_{V} \tensor{N}_n^T \vec{f}(\tpdt) \, dV
+      &+ \int_{V} \tensor{N}_m^T \vec{f}(\tpdt) \, dV
     \end{aligned}
     \\
     \int_{S_f} \tensor{N}_p^T 
     \left( \tensor{R}_T \vec{d}(\tpdt)
-      - \tensor{N}_{m^+} \vec{u}_{m^+}(\tpdt) + \tensor{N}_{m^-} \vec{u}_{m^-}(\tpdt)
+      - \tensor{N}_{n^+} \vec{u}_{n^+}(\tpdt) + \tensor{N}_{n^-} \vec{u}_{n^-}(\tpdt)
     \right)
     \, dS
   \end{array} \right).
@@ -382,14 +386,14 @@ some algebra we find this portion of the
 \begin{equation}
   \label{eqn:jacobian:implicit:stiffness}
   \tensor{K} = \frac{1}{4} \int_v 
-  (\nabla^T + \nabla) \tensor{N}_n^T \cdot
-  \tensorfour{C} \cdot (\nabla + \nabla^T) \tensor{N}_m  \, dV.
+  (\nabla^T + \nabla) \tensor{N}_m^T \cdot
+  \tensorfour{C} \cdot (\nabla + \nabla^T) \tensor{N}_n  \, dV.
 \end{equation}
 Following a similar procedure, we find the portion of the Jacobian
 associated with equation~(\ref{eqn:quasi-static:residual:fault}) is
 \begin{equation}
   \label{eqn:jacobian:constraint}
-  \tensor{L} = \int_{S_f} \tensor{N}_p^T (-\tensor{N}_{m^+}+\tensor{N}_{m^-}) \, dS.
+  \tensor{L} = \int_{S_f} \tensor{N}_p^T (-\tensor{N}_{n^+}+\tensor{N}_{n^-}) \, dS.
 \end{equation}
 Thus, the Jacobian of the entire system has the form,
 \begin{equation}
@@ -412,19 +416,19 @@ inertial term:
 \begin{equation}
 \vec{r} = \left( \begin{array}{c}
     \begin{aligned}
-      - \int_{V} \nabla \tensor{N}_n^T \cdot \tensor{\sigma}(\tpdt) \, dV
-      + \int_{S_T} \tensor{N}_n^T \vec{T}(\tpdt) \, dS
-      &+ \int_{S_f^{+}} \tensor{N}_n^T \tensor{N}_p \vec{l}_p(\tpdt) \, dS
-      - \int_{S_f^{-}} \tensor{N}_n^T \tensor{N}_p \vec{l}_p(\tpdt) \, dS
+      - \int_{V} \nabla \tensor{N}_m^T \cdot \tensor{\sigma}(\tpdt) \, dV
+      + \int_{S_T} \tensor{N}_m^T \vec{T}(\tpdt) \, dS
+      &+ \int_{S_f^{+}} \tensor{N}_m^T \tensor{N}_p \vec{l}_p(\tpdt) \, dS
+      - \int_{S_f^{-}} \tensor{N}_m^T \tensor{N}_p \vec{l}_p(\tpdt) \, dS
       \\
-      &+ \int_{V} \tensor{N}_n^T \vec{f}(\tpdt) \, dV
-      - \int_{V} \rho \tensor{N}_n^T \tensor{N}_m 
-          \frac{\partial^2 \vec{u}_m}{\partial t^2} \, dV
+      &+ \int_{V} \tensor{N}_m^T \vec{f}(\tpdt) \, dV
+      - \int_{V} \rho \tensor{N}_m^T \tensor{N}_n 
+          \frac{\partial^2 \vec{u}_n}{\partial t^2} \, dV
         \end{aligned}
     \\
     \int_{S_f} \tensor{N}_p^T 
     \left( \tensor{R}_T \vec{d}(\tpdt)
-      - \tensor{N}_{m^+} \vec{u}_{m^+}(\tpdt) + \tensor{N}_{m^-} \vec{u}_{m^-}(\tpdt)
+      - \tensor{N}_{n^+} \vec{u}_{n^+}(\tpdt) + \tensor{N}_{n^-} \vec{u}_{n^-}(\tpdt)
     \right)
     \, dS
   \end{array} \right).
@@ -448,17 +452,17 @@ difference scheme, so that the accelerat
 \end{gather}
 Expanding the inertial term yields
 \begin{equation}
-  - \int_{V} \rho \tensor{N}_n^T \tensor{N}_m \frac{\partial^2 \vec{u}_m}{\partial
+  - \int_{V} \rho \tensor{N}_m^T \tensor{N}_n \frac{\partial^2 \vec{u}_n}{\partial
     t^2} \, dV =
-  - \frac{1}{\Delta t^2} \int_{V} \rho \tensor{N}_n^T \tensor{N}_m \left(
-      d\vec{u}_m(t) - \vec{u}_m(t) + \vec{u}_m(\tmdt)
+  - \frac{1}{\Delta t^2} \int_{V} \rho \tensor{N}_m^T \tensor{N}_n \left(
+      d\vec{u}_n(t) - \vec{u}_n(t) + \vec{u}_n(\tmdt)
     \right) \, dV,
 \end{equation}
 so that the upper portion of the Jacobian is
 \begin{equation}
   \label{eqn:jacobian:explicit:inertia}
   \tensor{K} = 
-    \frac{1}{\Delta t^2} \int_{V} \rho \tensor{N}_n^T \tensor{N}_m \, dV.
+    \frac{1}{\Delta t^2} \int_{V} \rho \tensor{N}_m^T \tensor{N}_n \, dV.
 \end{equation}
 
 
@@ -529,34 +533,34 @@ of the general form of a linear system o
 \vec{u} = \vec{b}$), our subset of equations has the form
 \begin{equation}
   \begin{pmatrix}
-    \tensor{K}_{m^+m^+} & 0 & \tensor{L}_p^T  \\
-    0 & \tensor{K}_{m^-m^-} & -\tensor{L}_p^T \\
+    \tensor{K}_{n^+n^+} & 0 & \tensor{L}_p^T  \\
+    0 & \tensor{K}_{n^-n^-} & -\tensor{L}_p^T \\
     \tensor{L}_p & -\tensor{L}_p & 0
   \end{pmatrix}
   \begin{pmatrix}
-  \vec{u}_{m^+} \\
-  \vec{u}_{m^-} \\
+  \vec{u}_{n^+} \\
+  \vec{u}_{n^-} \\
   \vec{l}_p \\
   \end{pmatrix}
   =
   \begin{pmatrix}
-  \vec{b}_{m^+} \\
-  \vec{b}_{m^-} \\
+  \vec{b}_{n^+} \\
+  \vec{b}_{n^-} \\
   \vec{b}_p \\
   \end{pmatrix},
 \end{equation}
-where $m^+$ and $m^-$ refer to the degrees of freedom associated with
+where $n^+$ and $n^-$ refer to the degrees of freedom associated with
 the positive and negative sides of the fault,
-respectively. Furthermore, we can ignore the terms $\vec{b}_{m^+}$ and
-$\vec{b}_{m^-}$ because they do not change as we change the Lagrange
+respectively. Furthermore, we can ignore the terms $\vec{b}_{n^+}$ and
+$\vec{b}_{n^-}$ because they do not change as we change the Lagrange
 multipliers or fault slip. This means we can solve the following
 equations to estimate the change in fault slip $\partial \vec{d}$
 corresponding to a perturbation in the Lagrange multipliers $\partial
 \vec{l}_p$:
 \begin{gather}
-  \tensor{K}_{m^+m^+} \partial \vec{u}_{m^+} = - \tensor{L}_p^T \partial \vec{l}_p, \\
-  \tensor{K}_{m^-m^-} \partial \vec{u}_{m^-} =  \tensor{L}_p^T \partial \vec{l}_p, \\
-  \partial \vec{d} = \tensor{R} \left( \partial \vec{u}_{m^+} - \partial \vec{u}_{m^-} \right).
+  \tensor{K}_{n^+n^+} \partial \vec{u}_{n^+} = - \tensor{L}_p^T \partial \vec{l}_p, \\
+  \tensor{K}_{n^-n^-} \partial \vec{u}_{n^-} =  \tensor{L}_p^T \partial \vec{l}_p, \\
+  \partial \vec{d} = \tensor{R} \left( \partial \vec{u}_{n^+} - \partial \vec{u}_{n^-} \right).
 \end{gather}
 This estimate is exact if all other degrees of freedom are constrained
 (which is generally only the case for simple toy problems), quite good
@@ -570,9 +574,9 @@ PyLith includes several commonly used fa
 PyLith includes several commonly used fault constitutive models, all
 of which specify the shear traction on the fault $T_f$ as a function
 of the cohesive stress $T_c$, coefficient of friction, $\mu_f$, and
-normal traction $T_n$,
+normal traction $T_m$,
 \begin{equation}
-  T_f = T_c - \mu_f T_n.
+  T_f = T_c - \mu_f T_m.
 \end{equation}
 We use the sign convention that a compressive normal tractions are
 negative. The fault constitutive models include static friction,
@@ -598,7 +602,7 @@ for details).
     \item custom preconditioner
   \end{itemize}
 
-\subsection{Dynamic Simulations}\brad{Rough draft}
+\subsection{Dynamic Simulations}
 
 In the dynamic simulations the the Courant-Friderichs-Lewy condition
 controls the stability of the time integration. In most dynamic
@@ -669,20 +673,20 @@ associated with the fault slip constrain
 associated with the fault slip constraint in solving the system of
 equations via a Schur's complement algorithm. We compute an initial
 residual assuming the increment in the solution is zero (i.e.,
-$d\vec{u}_m = \vec{0}$ and $d\vec{l}_p = \vec{0}$,
+$d\vec{u}_n = \vec{0}$ and $d\vec{l}_p = \vec{0}$,
 \begin{equation}
-  \vec{r}^* = \begin{pmatrix} \vec{r}_m^* \\ \vec{r}_p^* \end{pmatrix} =
-  \begin{pmatrix} \vec{b}_m \\ \vec{b}_p \end{pmatrix}
+  \vec{r}^* = \begin{pmatrix} \vec{r}_n^* \\ \vec{r}_p^* \end{pmatrix} =
+  \begin{pmatrix} \vec{b}_n \\ \vec{b}_p \end{pmatrix}
   - \begin{pmatrix}
     \tensor{K} & \tensor{L}^T \\ \tensor{L} & 0
   \end{pmatrix}
-  \begin{pmatrix} \vec{u}_m \\ \vec{l}_m \end{pmatrix}.
+  \begin{pmatrix} \vec{u}_n \\ \vec{l}_n \end{pmatrix}.
 \end{equation}
  We compute a corresponding initial solution to the system of equations
-$\vec{u}_m^*$ ignoring the off-diagonal blocks in the Jacobian and
+$\vec{u}_n^*$ ignoring the off-diagonal blocks in the Jacobian and
 the increment in the Lagrange multipliers.
 \begin{equation}
-d\vec{u}_m^* = \tensor{K}^{-1} \vec{r}_m,
+d\vec{u}_n^* = \tensor{K}^{-1} \vec{r}_n,
 \end{equation}
 taking advantage of the fact that we construct $\tensor{K}$ so that it
 is diagonal. 
@@ -693,35 +697,35 @@ residual is
 residual is
 \begin{equation}
   \label{eqn:lumped:jacobian:residual}
-  \vec{r} = \begin{pmatrix} \vec{r}_m \\ \vec{r}_p \end{pmatrix} =
-  \begin{pmatrix} \vec{r}_m^* \\ \vec{r}_p^* \end{pmatrix}
+  \vec{r} = \begin{pmatrix} \vec{r}_n \\ \vec{r}_p \end{pmatrix} =
+  \begin{pmatrix} \vec{r}_n^* \\ \vec{r}_p^* \end{pmatrix}
   - \begin{pmatrix}
     \tensor{K} & \tensor{L}^T \\ \tensor{L} & 0
   \end{pmatrix}
-  \begin{pmatrix} d\vec{u}_m \\ d\vec{l}_m \end{pmatrix}.
+  \begin{pmatrix} d\vec{u}_n \\ d\vec{l}_n \end{pmatrix}.
 \end{equation}
 Solving the first row of equation~(\ref{eqn:lumped:jacobian:residual})
 for the increment in the solution and accounting for the structure of
 $\tensor{L}$ as we write the expressions for degrees of freedom on
 each side of the fault, we have
 \begin{gather}
-  d\vec{u}_{m^+} = 
-    d\vec{u}_{m^+}^* - \tensor{K}_{m^+m^+}^{-1} \tensor{L}_p^T d\vec{l}_p, \\
-  d\vec{u}_{m^-} = 
-    d\vec{u}_{m^-}^* + \tensor{K}_{m^-m^-}^{-1} \tensor{L}_p^T d\vec{l}_p.
+  d\vec{u}_{n^+} = 
+    d\vec{u}_{n^+}^* - \tensor{K}_{n^+n^+}^{-1} \tensor{L}_p^T d\vec{l}_p, \\
+  d\vec{u}_{n^-} = 
+    d\vec{u}_{n^-}^* + \tensor{K}_{n^-n^-}^{-1} \tensor{L}_p^T d\vec{l}_p.
 \end{gather}
 Substituting into the second row of
 equation~(\ref{eqn:lumped:jacobian:residual}) and isolating the term
 with the increment in the Lagrange multipliers yields
 \begin{equation}
-  \tensor{L}_p \left( \tensor{K}_{m^+m^+}^{-1} + \tensor{K}_{m^-m^-}^{-1} \right)
+  \tensor{L}_p \left( \tensor{K}_{n^+n^+}^{-1} + \tensor{K}_{n^-n^-}^{-1} \right)
   \tensor{L}^T_p d\vec{l}_p =
-  -\vec{r}_p^* + \tensor{L}_p \left( d\vec{u}_{m^+}^* - d\vec{u}_{m^-}^* \right).
+  -\vec{r}_p^* + \tensor{L}_p \left( d\vec{u}_{n^+}^* - d\vec{u}_{n^-}^* \right).
 \end{equation}
 Letting
 \begin{equation}
   \tensor{S}_p = \tensor{L}_p 
-  \left( \tensor{K}_{m^+m^+}^{-1} + \tensor{K}_{m^-m^-}^{-1} \right)
+  \left( \tensor{K}_{n^+n^+}^{-1} + \tensor{K}_{n^-n^-}^{-1} \right)
   \tensor{L}^T_p,
 \end{equation}
 and recognizing that $S_p$ is diagonal because ${K}$ and ${L}_p$ are
@@ -729,14 +733,14 @@ multipliers,
 multipliers,
 \begin{equation}
   d\vec{l}_p = \tensor{S}_p^{-1} \left(
-  -\vec{r}_p^* + \tensor{L}_p \left( d\vec{u}_{m^+}^* - d\vec{u}_{m^-}^* \right)
+  -\vec{r}_p^* + \tensor{L}_p \left( d\vec{u}_{n^+}^* - d\vec{u}_{n^-}^* \right)
   \right).
 \end{equation}
 Now that we have the increment in the Lagrange multipliers, we can
-correct our initial solution $d\vec{u}_m^*$ so that the true residual
+correct our initial solution $d\vec{u}_n^*$ so that the true residual
 is zero,
 \begin{equation}
-  d\vec{u}_m = d\vec{u}_m^* - \tensor{K}^{-1} \tensor{L}^T d\vec{l}_p.
+  d\vec{u}_n = d\vec{u}_n^* - \tensor{K}^{-1} \tensor{L}^T d\vec{l}_p.
 \end{equation}
 Because $\tensor{K}$ and $\tensor{L}$ are comprised of diagonal
 blocks, this expression for the updates to the solution are local to
@@ -754,7 +758,7 @@ simplifies to
 simplifies to
 \begin{equation}
   \partial \vec{d} = - \tensor{R} 
-  \left( \tensor{K}_{m^+m+}^{-1} + \tensor{K}_{m^-m^-}^{-1} \right)
+  \left( \tensor{K}_{n^+n^+}^{-1} + \tensor{K}_{n^-n^-}^{-1} \right)
   \tensor{L}_p^T \partial \vec{l}_p.
 \end{equation}
 



More information about the CIG-COMMITS mailing list