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

Matthew Knepley knepley at gmail.com
Fri Apr 28 13:11:47 CDT 2017


On Fri, Apr 28, 2017 at 1:09 PM, Matthew Knepley <knepley at gmail.com> wrote:

> 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.
>

I just checked master. It was already merged. Please recheck your master.

  Thanks,

     Matt


>   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
>



-- 
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/daeafee1/attachment-0001.html>


More information about the petsc-users mailing list