<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#ffffff">
Hi Gong,<br>
You do not need to modify the source code for the right preconditioning.<br>
The additional preconditioner (say M_D^{-1}) is built from the
approximate eigenvalues of M^{-1}A or AM^{-1}.<br>
Hence you are solving either M_D^{-1}M_{-1}Ax = M_D^{-1}M_{-1}b or
AM^{-1}M^{-1}_Dy = b for x = M^{-1}M^{-1}_Dy <br>
<br>
Thanks<br>
Desire <br>
<br>
On 10/03/2011 03:03 PM, Barry Smith wrote:
<blockquote cite="mid:45548A70-8582-4169-92A1-E05EB44CCDBE@mcs.anl.gov"
type="cite">
<pre wrap=""> Desire,
Any suggestions? Does this make sense?
Thanks
Barry
On Oct 3, 2011, at 4:47 AM, Gong Ding wrote:
</pre>
<blockquote type="cite">
<pre wrap="">Hi,
I had installed petsc-3.2, which has a new deflated GMRES solver.
It seems the deflation procedure provides addtional precondition on top of GMRES.
However, it seems the deflation was implemented as first right preconditioner:
if (ksp->pc_side == PC_LEFT) {
/* Apply the first preconditioner */
ierr = KSP_PCApplyBAorAB (ksp,VEC_VV (it), VEC_TEMP,VEC_TEMP_MATOP);
CHKERRQ (ierr);
/* Then apply Deflation as a preconditioner */
ierr=KSPDGMRESApplyDeflation (ksp, VEC_TEMP, VEC_VV (1+it));
CHKERRQ (ierr);
} else if (ksp->pc_side == PC_RIGHT) {
ierr=KSPDGMRESApplyDeflation (ksp, VEC_VV (it), VEC_TEMP);
CHKERRQ (ierr);
ierr=KSP_PCApplyBAorAB (ksp, VEC_TEMP, VEC_VV (1+it), VEC_TEMP_MATOP);
CHKERRQ (ierr);
}
Since a "fixed" external preconditoner M such as ILU or my own PC will be used,
I want the deflation apply on AM^-1. As a result, the update of deflation preconditioner will not
affect the fixed preconditioner M. How should I modify the source code?
Gong Ding
</pre>
</blockquote>
<pre wrap=""><!---->
</pre>
</blockquote>
</body>
</html>