[cig-commits] r16815 - short/3D/PyLith/trunk/playpen/faultpc

brad at geodynamics.org brad at geodynamics.org
Thu May 27 15:49:14 PDT 2010


Author: brad
Date: 2010-05-27 15:49:14 -0700 (Thu, 27 May 2010)
New Revision: 16815

Added:
   short/3D/PyLith/trunk/playpen/faultpc/notes.tex
Modified:
   short/3D/PyLith/trunk/playpen/faultpc/checkfaultpc.py
Log:
Added some notes on an alternative fault preconditioner implementation.

Modified: short/3D/PyLith/trunk/playpen/faultpc/checkfaultpc.py
===================================================================
--- short/3D/PyLith/trunk/playpen/faultpc/checkfaultpc.py	2010-05-27 21:46:14 UTC (rev 16814)
+++ short/3D/PyLith/trunk/playpen/faultpc/checkfaultpc.py	2010-05-27 22:49:14 UTC (rev 16815)
@@ -49,7 +49,7 @@
 # Compute preconditioner using diagonal approximations (but full Ai)
 Pd = numpy.zeros(J.shape)
 Pd[0:8,0:8] = Ai + numpy.dot(numpy.dot(numpy.dot(numpy.dot(Aid, C.transpose()), -CACdi), C), Aid)
-Pd[0:8,8:12] = numpy.dot(numpy.dot(-Aid, C.transpose()), -CACdi)
+Pd[0:8,8:12] = numpy.dot(numpy.dot(Aid, C.transpose()), CACdi)
 Pd[8:12,0:8] = numpy.dot(CACdi, numpy.dot(C, Aid))
 Pd[8:12,8:12] = -CACdi
 
@@ -63,3 +63,10 @@
 print "Pd01:", numpy.dot(numpy.dot(-Aid, C.transpose()), -CACdi)
 print "Pd10:", numpy.dot(CACdi, numpy.dot(C, Aid))
 print "Pd11:", -CACdi
+
+# Print simplified terms for preconditioner formed with diagonal approximations
+CCti = numpy.linalg.inv(numpy.dot(C, C.transpose()))
+print "Pd00:", -numpy.dot(Aid, numpy.dot(numpy.dot(C.transpose(), CCti), C))
+print "Pd01:", numpy.dot(C.transpose(), CCti)
+print "Pd10:", numpy.dot(CCti, C)
+print "Pd11:", -CACdi

Added: short/3D/PyLith/trunk/playpen/faultpc/notes.tex
===================================================================
--- short/3D/PyLith/trunk/playpen/faultpc/notes.tex	                        (rev 0)
+++ short/3D/PyLith/trunk/playpen/faultpc/notes.tex	2010-05-27 22:49:14 UTC (rev 16815)
@@ -0,0 +1,70 @@
+\documentclass{article}[10pt]
+\usepackage{amsmath}
+
+\renewcommand{\matrix}[1]{\bar{#1}}
+\newcommand{\Adiag}{\ensuremath{A_\mathit{diag}}}
+
+% ------------------------------------------------------------------
+% Basic page layout
+\setlength{\textheight}{9.0in}
+\setlength{\textwidth}{7.0in}
+\setlength{\topmargin}{-20pt}
+\setlength{\headheight}{16pt}
+\setlength{\headsep}{4pt}
+\setlength{\oddsidemargin}{-0.25in}
+\setlength{\footskip}{24pt}
+%
+\setlength{\floatsep}{12pt}
+\setlength{\textfloatsep}{12pt}
+\setlength{\intextsep}{12pt}
+\setlength{\abovecaptionskip}{0pt}
+\setlength{\belowcaptionskip}{6pt}
+%
+\setlength{\parindent}{0.25in}
+\setlength{\parskip}{6pt}
+%
+% ------------------------------------------------------------------
+% Font Sizes
+\usepackage{times}
+%
+% ======================================================================
+\begin{document}
+
+% ----------------------------------------------------------------------
+\section{Schur Complement Preconditioner}
+
+We have a Jacobian of the form
+\begin{equation}
+  J = \left( \begin{array}{cc}
+    A & C^T \\
+    C & 0
+  \end{array} \right).
+\end{equation}
+Using the Schur complement, we want to form the preconditioner
+\begin{equation}
+  P = \left( \begin{array}{cc}
+    A^{-1} + A^{-1} C^T (-C A^{-1} C^T)^{-1} C A^{-1} &
+    -A^{-1} C^T (-C A^{-1} C^T)^{-1} \\
+    (C A^{-1} C^T)^{-1} C A^{-1} & -(C A^{-1} C^T)^{-1}
+  \end{array} \right).
+\end{equation}
+We approximate this preconditioner by using only the diagonal terms of $A$ and $C A^{-1} C^T$:
+\begin{equation}
+  Pd = \left( \begin{array}{cc}
+    \Adiag^{-1} + \Adiag^{-1} C^T (-C \Adiag^{-1} C^T)^{-1} C \Adiag^{-1} &
+    \Adiag^{-1} C^T (C \Adiag^{-1} C^T)^{-1} \\
+    (C \Adiag^{-1} C^T)^{-1} C \Adiag^{-1} & -(C \Adiag^{-1} C^T)^{-1}
+  \end{array} \right).
+\end{equation}
+If we assume that the terms in $\Adiag$ are equal across the fault (same terms on the positive and negative sides of the fault) and independent of orientation, the preconditioner simplifies to
+\begin{equation}
+  Pd = \left( \begin{array}{cc}
+    \Adiag^{-1} - \Adiag^{-1} C^T (C C^T)^{-1} C &
+    C^T (C C^T)^{-1} \\
+    (C C^T)^{-1} C & -\Adiag (C C^T)^{-1}
+  \end{array} \right).
+\end{equation}
+
+
+% ======================================================================
+\end{document}
\ No newline at end of file



More information about the CIG-COMMITS mailing list