PCNN preconditioner and setting the interface

Barry Smith bsmith at mcs.anl.gov
Fri Apr 3 15:20:16 CDT 2009


On Apr 3, 2009, at 4:29 AM, Andreas Grassl wrote:

> Barry Smith schrieb:
>>
>> On Mar 24, 2009, at 11:34 AM, Andreas Grassl wrote:
>>
>>> Barry Smith schrieb:
>>>>
>>>> On Mar 24, 2009, at 8:45 AM, Andreas Grassl wrote:
>>>>
>>>>> Hello,
>>>>>
>>>>> I'm working with a FE-Software where I get out the element  
>>>>> stiffness
>>>>> matrices and the element-node correspondency to setup the  
>>>>> stiffness
>>>>> matrix for solving with PETSc.
>>>>>
>>>>> I'm currently fighting with the interface definition. My
>>>>> LocalToGlobalMapping for test-purposes was the "identity"-IS,  
>>>>> but I
>>>>> guess this is far from the optimum, because nowhere is defined a  
>>>>> node
>>>>> set of interface nodes.
>>>>>
>>>>> How do I declare the interface? Is it simply a reordering of the  
>>>>> nodes,
>>>>> the inner nodes are numbered first and the interface nodes last?
>>>>
>>>>  Here's the deal. Over all the processors you have to have a single
>>>> GLOBAL numbering of the
>>>> nodes. The first process starts with 0 and each process starts  
>>>> off with
>>>> one more than then previous process had.
>>>
>>> I am confused now, because after you said to use  
>>> MatSetValuesLocal() to
>>> put the values in the matrix, i thought local means the unique
>>> (sequential) numbering independent of the processors in use and  
>>> global a
>>> processor-specific (parallel) numbering.
>>
>>   No, each process has its own independent local numbering from 0 to
>> nlocal-1
>> the islocaltoglobalmapping you create gives the global number for  
>> each
>> local number.
>>>
>>>
>>> So the single GLOBAL numbering is the numbering obtained from the
>>> FE-Software represented by {0,...,23}
>>>
>>> 0  o  o  O  o  5
>>>        |
>>> 6  o  o  O  o  o
>>>        |
>>> O--O--O--O--O--O
>>>        |
>>> o  o  o  O  o  23
>>>
>>> And I set the 4 different local numberings {0,...,11}, {0,...,8},
>>> {0,...7}, {0,...,5} with the call of ISLocalToGlobalMappingCreate?
>>>
>>> How do I set the different indices?
>>> {0,1,2,3,6,7,8,9,12,13,14,15} would be the index vector for the  
>>> upper
>>> left subdomain and {3,9,12,13,14,15} the index vector for the  
>>> interface
>>> f it.
>>
>>   I don't understand your figure, but I don't think it matters.
>
> It is a 2D grid arising from a FE-discretization with 4 node- 
> elements. The small
> o-nodes are inner nodes, the big O-nodes are interface nodes,  
> numbered row-wise
> from upper left to lower right. Let's assume this node numbers  
> correspond to the
> DOF-number in the system of equation and we don't regard the  
> boundary for now,
> so I receive a 24x24 Matrix which has to be partitioned into 4  
> subdomains.
                                                
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    Once you have the global matrix you CANNOT partition it into the  
pieces needed
for Neumann-Neumann type methods. That is the whole idea of NN  
methods. Each subdomain matrix
is the contribution from certain ELEMENTS only.
>
>
>>>
>>>
>>> The struct PC_IS defined in src/ksp/pc/impls/is/pcis.h contains IS
>>> holding such an information (I suppose at least), but I have no  
>>> idea how
>>> to use them efficiently.
>>>
>>> Do I have to manage a PC_IS object for every subdomain?
>>
>>   In the way it is implemented EACH process has ONE subdomain. Thus
>> each process has
>> ONE local to global mapping.
>
> Is there a possibility to set this mentioned mapping from my global  
> view? Or do
> I have to assemble the matrix locally?

   You have to assemble locally.

   Barry

>
>
>>
>>   You are getting yourself confused thinking things are more
>> complicated than they really
>> are.
>
> I'll try to change my point of view to understand the things  
> easier ;-)
>
> cheers
>
> ando
>
> -- 
> /"\                               Grassl Andreas
> \ /    ASCII Ribbon Campaign      Uni Innsbruck Institut f. Mathematik
>  X      against HTML email        Technikerstr. 13 Zi 709
> / \                               +43 (0)512 507 6091



More information about the petsc-users mailing list