[petsc-users] Multiple points constraint in parallel

Matthew Knepley knepley at gmail.com
Wed May 31 14:04:16 CDT 2023


On Wed, May 31, 2023 at 2:43 PM YuSh Lo <ysjosh.lo at gmail.com> wrote:

> Matthew Knepley <knepley at gmail.com> 於 2023年5月31日 週三 下午1:02寫道:
>
>> On Wed, May 31, 2023 at 1:53 PM YuSh Lo <ysjosh.lo at gmail.com> wrote:
>>
>>> Hi Matthew,
>>>
>>> Matthew Knepley <knepley at gmail.com> 於 2023年5月31日 週三 上午5:08寫道:
>>>
>>>> On Wed, May 31, 2023 at 1:25 AM YuSh Lo <ysjosh.lo at gmail.com> wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> I have some multiple points constraint input as follows,
>>>>>
>>>>> A_1 a_4
>>>>> B_2 b_5
>>>>> C_3 c_6
>>>>>
>>>>> each columns are stored in different IS.
>>>>>
>>>>
>>>> So one IS lists the capital letter and one lists the lowercase?
>>>>
>>>        Yes.
>>>
>>>>
>>>>
>>>>> After dmplex distribute, they will be renumbered and distribution to
>>>>> certain processors.
>>>>>
>>>>
>>>> Plex does normally renumber and send ISes, so you are doing this
>>>> yourself?
>>>>
>>>      No, Plex does the distribution.
>>>
>>
>> I do not understand this. How does the DM know about this IS? Are you
>> calling DMDistributeFieldIS()?
>>
>       I first create a serial DM and use DMLabel to mark those nodes, and
> store them in IS. Then I call DMPlexDistribute.
>

Right, so DM distributes the Label, not the IS. Ah, so the answer to "will
the ISes you get from a label remain in the same order" is no since points
may be renumbered.

I think you want SF here.

  Thanks,

    Matt


>
>>
>>>
>>>>
>>>>> I have two questions:
>>>>>
>>>>> (1) I need both complete ISs are all the processors. Can I just do
>>>>> ISALLGather()?
>>>>>
>>>>
>>>> I think so. I cannot tell what you want to do.
>>>>
>>>>
>>>>> (2) Although renumbered, will the original order remain(ABC and abc)?
>>>>> If the number is the node number, after distribution and I do an
>>>>> ISALLGather()
>>>>> will I have the following on each processor?
>>>>>
>>>>> A_3 a_1
>>>>> B_4 b_2
>>>>> C_6 c_5
>>>>> (I randomly renumber them)
>>>>>
>>>>>
>>>>> This is what I can come up with now. Is there any better way to do it?
>>>>>
>>>>
>>>> Can you tell me what you want to use this for? Maybe there is an easier
>>>> way. For example,
>>>> if we want to impose a constraint on a mesh point, usually I mark that
>>>> point with a DMLabel.
>>>> These are propagated during distribution so you do not have to think
>>>> about it.
>>>>
>>>
>>>     So I have to impose constraint between two nodes. The upper case
>>> node is controlled by the lower case node, and there can be many pairs of
>>> constraint. When looping over elements if one node is controlled by the
>>> other then the corresponding entry has to be added to a different location
>>> e.x. [an index][A_3] to [an index][a_1]. I know how to use DMLabel, but I
>>> have used it on one node at a time only. I used DMLabel to mark those nodes
>>> with BCs. Now I must know the info of two nodes at the same time. The
>>> operations only have to done in assembling and calculating the element
>>> stiffness matrix of the elements that contain the upper case node, but I
>>> must know the info of the corresponding lower case node so I know where to
>>> assemble the entry.
>>>
>>
>> Oh, if you want to associate two mesh points, use a PetscSF. These can
>> also be remapped.
>>
>>   Thanks,
>>
>>     Matt
>>
>>
>>> Thanks,
>>> Josh
>>>
>>>
>>>>
>>>>   Thanks,
>>>>
>>>>      Matt
>>>>
>>>>
>>>>> Thanks,
>>>>> Josh
>>>>>
>>>>
>>>>
>>>> --
>>>> 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
>>>>
>>>> https://www.cse.buffalo.edu/~knepley/
>>>> <http://www.cse.buffalo.edu/~knepley/>
>>>>
>>>
>>
>> --
>> 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
>>
>> https://www.cse.buffalo.edu/~knepley/
>> <http://www.cse.buffalo.edu/~knepley/>
>>
>

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

https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20230531/adc2c2a3/attachment.html>


More information about the petsc-users mailing list