[petsc-users] Configure nested PCFIELDSPLIT with general index sets

Matthew Knepley knepley at gmail.com
Fri Apr 28 13:09:51 CDT 2017


On Fri, Apr 28, 2017 at 11:48 AM, Natacha BEREUX <natacha.bereux at gmail.com>
wrote:

> Dear Matt,
> Sorry for my (very) late reply.
> I was not able to find the Fortran interface of
> DMSellSetCreateFieldDecomposition in the late petsc-3.7.6 fortran (and my
> code still fails to link).
> I have the feeling that it is missing in the master branch.
> And I was not able to get it on bitbucket either.
> Is there a branch from which I can pull your commit  ?
>

I would either:

  a) Use the 'next' branch

or

  b) wait until Monday for me to merge to 'master'

This merge has been held up, but can now go forward.

  Thanks,

     Matt


> Thans a lot for your help,
> Natacha
>
> On Thu, Mar 30, 2017 at 9:25 PM, Matthew Knepley <knepley at gmail.com>
> wrote:
>
>> On Wed, Mar 22, 2017 at 1:45 PM, Natacha BEREUX <natacha.bereux at gmail.com
>> > wrote:
>>
>>> Hello Matt,
>>> Thanks a lot for your answers.
>>> Since I am working on a large FEM Fortran code, I have to stick to
>>> Fortran.
>>> Do you know if  someone plans to add this Fortran interface? Or may be I
>>> could do it myself ? Is this particular interface very hard to add ?
>>> Perhaps could  I mimic some other interface ?
>>> What would you advise ?
>>>
>>
>> I have added the interface in branch knepley/feature-fortran-compose. I
>> also put this in the 'next' branch. It
>> should make it to master soon. There is a test in sys/examples/tests/ex13f
>>
>>   Thanks,
>>
>>     Matt
>>
>>
>>> Best regards,
>>> Natacha
>>>
>>> On Wed, Mar 22, 2017 at 12:33 PM, Matthew Knepley <knepley at gmail.com>
>>> wrote:
>>>
>>>> On Wed, Mar 22, 2017 at 10:03 AM, Natacha BEREUX <
>>>> natacha.bereux at gmail.com> wrote:
>>>>
>>>>> Hello,
>>>>> if my understanding is correct, the approach proposed by Matt and
>>>>> Lawrence is the following :
>>>>> - create a DMShell (DMShellCreate)
>>>>> - define my own CreateFieldDecomposition to return the index sets I
>>>>> need (for displacement, pressure and temperature degrees of freedom) :
>>>>> myCreateFieldDecomposition(... )
>>>>> - set it in the DMShell ( DMShellSetCreateFieldDecomposition)
>>>>> - then sets  the DM in KSP context  (KSPSetDM)
>>>>>
>>>>> I  have some more questions
>>>>> - I did not succeed in setting my own CreateFieldDecomposition in the
>>>>> DMShell : link  fails with " unknown reference to «
>>>>> dmshellsetcreatefielddecomposition_ ». Could it be a Fortran problem
>>>>> (I am using Fortran)?  Is this routine available in PETSc  Fortran
>>>>> interface ? \
>>>>>
>>>>
>>>> Yes, exactly. The Fortran interface for passing function pointers is
>>>> complex, and no one has added this function yet.
>>>>
>>>>
>>>>> - CreateFieldDecomposition is supposed to return an array of dms (to
>>>>> define the fields). I am not able to return such datas.  Do I return a
>>>>> PETSC_NULL_OBJECT instead ?
>>>>>
>>>>
>>>> Yes.
>>>>
>>>>
>>>>> - do I have to provide something else to define the DMShell ?
>>>>>
>>>>
>>>> I think you will have to return local and global vectors, but this just
>>>> means creating a vector of the correct size and distribution.
>>>>
>>>>   Thanks,
>>>>
>>>>      Matt
>>>>
>>>>
>>>>> Thanks a lot for your help
>>>>> Natacha
>>>>>
>>>>> On Tue, Mar 21, 2017 at 2:44 PM, Natacha BEREUX <
>>>>> natacha.bereux at gmail.com> wrote:
>>>>>
>>>>>> Thanks for your quick answers. To be honest, I am not familiar at all
>>>>>> with DMShells and DMPlexes. But since it is what I need, I am going to try
>>>>>> it.
>>>>>> Thanks again  for your advices,
>>>>>> Natacha
>>>>>>
>>>>>> On Tue, Mar 21, 2017 at 2:27 PM, Lawrence Mitchell <
>>>>>> lawrence.mitchell at imperial.ac.uk> wrote:
>>>>>>
>>>>>>>
>>>>>>> > On 21 Mar 2017, at 13:24, Matthew Knepley <knepley at gmail.com>
>>>>>>> wrote:
>>>>>>> >
>>>>>>> > I think the remedy is as easy as specifying a DMShell that has a
>>>>>>> PetscSection (DMSetDefaultSection) with your ordering, and
>>>>>>> > I think this is how Firedrake (http://www.firedrakeproject.org/)
>>>>>>> does it.
>>>>>>>
>>>>>>> We actually don't use a section, but we do provide
>>>>>>> DMCreateFieldDecomposition_Shell.
>>>>>>>
>>>>>>> If you have a section that describes all the fields, then I think if
>>>>>>> the DMShell knows about it, you effectively get the same behaviour as
>>>>>>> DMPlex (which does the decomposition in the same manner?).
>>>>>>>
>>>>>>> > However, I usually use a DMPlex which knows about my
>>>>>>> > mesh, so I am not sure if this strategy has any holes.
>>>>>>>
>>>>>>> I haven't noticed anything yet.
>>>>>>>
>>>>>>> Lawrence
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> 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
>>>>
>>>
>>>
>>
>>
>> --
>> 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
>>
>
>


-- 
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20170428/ed611c80/attachment.html>


More information about the petsc-users mailing list