[petsc-dev] Jed!!!
Anton Popov
popov at uni-mainz.de
Mon Apr 28 01:17:07 CDT 2014
The non-scalable conversion from MATNEST to AIJ is already implemented
in PETSc by Dmitry.
The function is called MatConvert_Nest_AIJ. It is in the sources, but
not in documentation.
I tried it ones, but it didn't work. So maybe it's time to look at it again.
As far as I understand it is non-scalable because it exchanges the index
ranges between all the processors.
Whereas a smart version would just exchange between the neighboring
processors in communication graph.
But as Barry said, the scalability is not an issue for testing, so just
debugging this function would be enough.
Anton
On 4/27/14 6:32 PM, Jed Brown wrote:
> Barry Smith <bsmith at mcs.anl.gov> writes:
>
>> I am totally confused and likely users are to. Please point me to an
>> example that actually uses Matnest the way it is “supposed to be
>> used”.
> src/snes/examples/tutorials/ex28.c
>
> Note that this does not contain the word "nest". That is as intended.
>
>> I cannot even find a MatSetValues_Nest() so I do not see how one can
>> even interchange code between AIJ and Nest.
> You're supposed to use MatGetLocalSubMatrix(). Translating from global
> indices to local indices is a disaster that we want to avoid. So we go
> the other way. Speak the language of "split local" spaces during
> assembly and the data structure itself can live wherever is most
> efficient for the solver.
>
>> The users manual has the word nest several times but no indication
>> of how to use the damn thing.
> From the manual:
>
> The key to format-independent assembly is the function
>
> MatGetLocalSubMatrix(Mat A,IS isrow,IS iscol,Mat *submat);
More information about the petsc-dev
mailing list