[petsc-dev] coarse grid in gamg (for the OPTE paper)
Dmitry Karpeyev
dkarpeev at gmail.com
Thu Sep 19 15:17:33 CDT 2013
On Thu, Sep 19, 2013 at 1:28 PM, Jungho Lee <julee at mcs.anl.gov> wrote:
> To fill others in on the situation here; this was regarding a variational
> inequality example, that uses reduced space method for which routines are
> defined in src/snes/impls/vi/rs/virs.c. When MatGetSubMatrix was called to
> extract rows and columns of the original matrix corresponding to the
> "inactive" indices, original information about the block size wasn't copied.
>
> KSP performance (with fgmres and gmres) deteriorates dramatically when I
> switch from mg to gamg (with agg), which I think is due to the lack of
> mechanism in gamg to take inactive/active indices into consideration for
> examples like this.
>
Wouldn't gamg work with the submatrix of only inactive degrees of freedom
-- the jac_inact_inact in
KSPSetOperators(snes->ksp,jac_inact_inact,prejac_inact_inact,flg) of
SNESSolve_VINEWTONRSLS()?
>
> There is DMSetVI in virs.c, which marks snes->dm as being associated with
> VI and makes it call an appropriate versions of coarsen (and
> createinterpolation, etc.,) which takes inactive IS into account, which in
> turn gets called in PCSetUp_MG. This part of PCSetUP_MG is skipped when
> gamg is used since it employs its own algorithm to figure out the coarse
> grid. So I think a possible solution is to provide a similar mechanism for
> gamg as well - but how?.
>
> Ideas?
>
> On Wed, Sep 18, 2013 at 9:11 PM, Mark F. Adams <mfadams at lbl.gov> wrote:
>
>> >>> results in two levels with the coarse problem being 13*13. Wouldn't
>> >>> it be natural for the coarse problem to be of size that's an integer
>> >>> multiple of 3, though?
>>
>> Yes, something is wrong here. And as Jed said if you have different Mats
>> for the operator and preconditioner the you have to set the block size on
>> the preconditioned Mat. If you are then we have a problem.
>
>
>> >
>> >>> 2) For the specific set of parameters I'm using for testing purposes,
>> >>> the smallest nonzero entry of the finest level matrix is of order
>> >>> e-7.
>>
>> BTW, the scaling of the matrix should not matter. If you see a
>> difference then we would want to look at it.
>>
>> >>> For the coarse level matrix (size 13*13), whose entries are
>> >>> determined by MatPtAP called in createlevel (in gamg.c), the smallest
>> >>> nonzero entry is of order e-24 - this jumped out at me as a potential
>> >>> sign of something wrong.
>>
>> Oh, you are talking about the smallest. That does not matter. (its a
>> sparse matrix so technically the smallest entry is zero)
>>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20130919/2468c051/attachment.html>
More information about the petsc-dev
mailing list