[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