[petsc-dev] Questions about Petsc

Barry Smith bsmith at mcs.anl.gov
Fri Sep 6 13:54:09 CDT 2013


On Sep 6, 2013, at 1:33 PM, Jed Brown <jedbrown at mcs.anl.gov> wrote:

> Please send these questions to petsc-dev (Cc'd now) or petsc-users so
> that others can comment.
> 
> Lulu Liu <lulu.liu at kaust.edu.sa> writes:
> 
>> Hi,
>> 
>> I want to implement ASPIN-like ideas, but based on field splitting. You
>> could find the details in PDF file.
> 
> You are proposing left-preconditioned nonlinear additive fieldsplit.
> This is a sensible algorithm that we have discussed before.  The only
> part that needs to be implemented is the fieldsplit solve: separation of
> G and H, then solving each separately.
> 
> Unfortunately, I think it's kinda tricky to come up with a generally
> useful interface.  In particular, many applications cannot partition the
> variables like you have done, meaning that the preconditioner is
> becomes: change variables, solve in other bases, then change back.  At
> this point, I would recommend implementing the solve with \hat F using
> SNESShell.
> 
>> My questions:
>> 
>> I have a nonlinear system including two equations. In my implementation, I
>> need to solve each equation separately, also I need to solve the coupled
>> system. I feel confused about ordering:
>> 
>> I know the unknowns are ordered as [p1,s1,p2,s2,p3,s3,......] in PETSc,
>> however, it seems that I need the variables like [p1,p2,p3,... s1,s2,s3,...]
> 
> No, just use a strided IS to describe each set of variables.  You can
> VecScatter from the packed/monolithic global vector to the split space.

   You can, in this case, more easily use VecStrideScatter, VecStrideGather, or  VecStrideScatterAll(), VecStrideGatherAll() These don't require creating the index sets and VecScatters yourself that using VecScatterBegin/End() would require you to do.

   Barry


> 
>> Is there any example to do the similar things in PETSc?
>> Do you have any ideas to implement the algorithm easier?
>> How to quickly extract [p1,p2,...p_{N}] or [s1,s2,....] from
>> [p1,p2,....s1,s2,s3,...] ?
>> How to quickly get the composed [p1,p2,...s1,s2,....] if I have [p1,p2,...]
>> and [s1,s2,..]?
>> 
> 
> <Problem.pdf>




More information about the petsc-dev mailing list