[petsc-dev] Using PCFieldSplitSetIS
Thomas Witkowski
thomas.witkowski at tu-dresden.de
Mon Mar 14 06:32:28 CDT 2011
Jed, I'm a little bit confused about your and Matt's answers. I played a
little bit with PFCFieldSplit, and I think that I got some basic
understanding of this concept. My code now creates two splits. One for
the unknowns of all subdomain interior nodes, and one for all unknowns
on the subdomain boundaries. This works fine. But what I want to
implement is a simple Schur complement approach. So all processes should
make an LU factorization on their subdomain first. Then all together
should solve the reduced Schur system to get the values on the subdomain
boundaries. And to the last all processes can easily compute the unknown
on their subdomains. Yes, I know that this is not very efficient. But it
doesn't matter. It is just to learn something about using PETSc in this
context. But till now I don't know what's the best way to implement this
Schur complement approach? Should I define blocks or splits for the
subdomains and the interior nodes? And what is the best way to force
PETSc to make some LU factorization on each subdomain and to store it
(it is needed to create the reduced Schur system, to define the action
of the Schur complement operator and to solve the subdomain unknows in
the last step) and to use it later? Maybe some of you could give me some
rough hints? Thanks,
Thomas
Jed Brown wrote:
>
> Thomas, I think Matt may have misunderstood what you wanted.
> PCFieldSplit does not solve multiple splits concurrently. You can
> emulate the first solve you need by defining a block diagonal system
> with one block per process. Then solving it with block Jacobi is the
> same as a direct solve. To expose more concurrency, you would need to
> create a new PC.
>
>> On Mar 9, 2011 9:51 PM, "Matthew Knepley" <knepley at gmail.com
>> <mailto:knepley at gmail.com>> wrote:
>>
>> Each process calls FieldSplitSetIS() with the indices for THAT FIELD
>> that are owned by that process. Each
>> process call FieldSplitSetIS() n+1 times if you have n+1 fields.
>> Identifying fields with processes is a mistake.
>>
>> Matt
>>
>>
>>
>> On Wed, Mar 9, 2011 at 1:50 PM, Thomas Witkowski
>> <Thomas.Witkowski at tu-dresden.de
>> <mailto:Thomas.Witkowski at tu-dresden.de>> wrote:
>> >
>> > As I ...
>>
>> --
>> 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
More information about the petsc-dev
mailing list