[petsc-users] multigrid implementation problem

Nakib Haider Protik nprot048 at uottawa.ca
Sun Jun 10 16:39:28 CDT 2012


Thank you for the fast reply.

Here's where I found a pcmg implementation that "looks more or less
correct". Does this code suffer from the same problem you were referring
to?

Many thanks in advance.

> On Sun, Jun 10, 2012 at 4:20 PM, Nakib Haider Protik
> <nprot048 at uottawa.ca>wrote:
>
>> Reason for two ksp objects:
>>
>> Multigrid and Domain Decomposition in PETSc
>> Barry Smith
>> PETSc Developer
>>
>> pg 28:
>>
>> //Use same pre and post smoother
>> MGGetSmoother(pc,int level,KSP *ksp);
>>
>>
>> //Use different pre and post smoother
>> MGGetSmootherDown(pc,int level,KSP *dksp);
>> MGGetSmootherUp(pc,int level,KSP *uksp);
>>
>> I was trying to use the second in my code.
>>
>
> But you created two outer-level KSP objects, then leaked their memory when
> you overwrote their value when accessing the smoother on levels.
>
>
>> I would be greatly helped if
>> you could tell me where exactly my code goes wrong.
>>
>
> The problem is that you are using the same local variable for every ksp
> arising in the code. When you get access to levels, you are overwriting
> the
> local variable. Since you did this so many times in various places where
> it
> was clearly not intended, I had assumed that you were not familiar with
> local variables in C. Everything that was incorrect with your code had to
> do with overwriting the local variable and later using it as though its
> original value was still intact. It would be better to explain what you
> are
> trying to achieve instead of posting code with nonsensical handling of
> local variables.
>
> You should read through the code you posted and fix all these places
> (declare new variables of type KSP so you don't overwrite the outer ones).
> If you still have trouble, run in valgrind. It will tell you when you lose
> the reference to the outer objects.
>
>
>>
>> As for the "accidental" correctness of the 1d code, here's where I found
>> the prototype:
>>
>> http://lists.mcs.anl.gov/pipermail/petsc-users/2011-May/008793.html
>>
>> If my question does not abide by the regulations of this mailing list,
>> or
>> if you are not obliged to answers questions of this kind, please let me
>> know. I am not looking for free lessons on c, but thanks for the link.
>> Despite the rude reply, thank you for taking the time.
>>
>


-- 
Nakib :)


More information about the petsc-users mailing list