[petsc-users] How to access the KSP objects from a PCFIELDSPLIT Schur preconditioner
Thomas Witkowski
thomas.witkowski at tu-dresden.de
Thu Oct 25 05:39:03 CDT 2012
Thanks, exactly what I've searched for.
Thomas
Am 24.10.2012 22:19, schrieb Jed Brown:
> You are looking for PCFieldSplitGetSubKSP().
>
> Matt's comment was about distinguishing between the KSP living inside
> of S = D - C A^{-1} B and the one used directly by PCFIeldSplit when
> solving with A.
>
> On Wed, Oct 24, 2012 at 3:04 PM, Thomas Witkowski
> <thomas.witkowski at tu-dresden.de
> <mailto:thomas.witkowski at tu-dresden.de>> wrote:
>
> Am 24.10.2012 21:33, schrieb Matthew Knepley:
>> On Wed, Oct 24, 2012 at 3:23 PM, Thomas Witkowski
>> <thomas.witkowski at tu-dresden.de
>> <mailto:thomas.witkowski at tu-dresden.de>> wrote:
>>
>> I want to play around with some special type of a Schur
>> complement preconditioner. It perfectly fits into PETSc's
>> fieldsplit preconditioner (schur - full factorization). But
>> for the inner solvers, I would like to create some MatShells.
>> So I need to access both KSP objects, for the upper block
>> (KSP(A_00)) and for the Schur complement (KSP(S)). How can I
>> get these objects in my source code?
>>
>>
>> First you have to make them different. This happens when you give
>> options for
>>
>> -fieldsplit_1_upper_*
>> -fieldsplit_1_inner_*
>>
>> This is how I customize the solvers to get things like SIMPLE.
>> Once they are created, you
>> can get them by pulling apart the FS. The upper is fs->kspupper,
>> and the inner is the KSP
>> from the MATSCHUR from fs->schur.
> I don't understand your solution. Maybe I should put some lines of
> code to emphasize my question. The relevant part looks as follows:
>
> PCSetType(pc, PCFIELDSPLIT);
> PCFieldSplitSetSchurFactType(pc, PC_FIELDSPLIT_SCHUR_FACT_FULL);
> ...
> PCFieldSplitSetIS(pc, "velocity", is0);
> PCFieldSplitSetIS(pc, "pressure", is1);
> ...
> KSP velocity;
> KSP schur;
> ....
>
> Okay, I don't solve any Stokes/Navier Stokes equation, but to make
> the names somehow convenient I choose here the names velocity and
> pressure for the two system blocks. My question is now, how to
> figure out the two inner solver objects from the field split
> preconditioner.
>
> Matt, if your answer is still appropriate to my question, can you
> make it clear on the above piece of code? Thank you very much.
>
> Thomas
>
>
>>
>> Matt
>>
>> Best regards,
>>
>> Thomas
>>
>>
>>
>>
>> --
>> What most experimenters take for granted before they begin their
>> experiments is infinitely more interesting than any results to
>> which their experiments lead.
>> -- Norbert Wiener
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20121025/0ca999e5/attachment.html>
More information about the petsc-users
mailing list