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 :)
