> Am 21.07.2021 um 05:30 schrieb Tang, Qi <[email protected]>:
> 
> Hi,
> 
> Now I think the DMStagStencilToIndexLocal provides the local index for given 
> (stencil) positions. How can we use that local index information to eliminate 
> the rows? 
> 
> Is the following code possible:
> 
> MatSetLocalToGlobalMapping(…);
> If (is_boundary){
> PetscInt ix;
> DMStagStencilToIndexLocal(…, &ix);
> MatZeroRowsLocal(… &ix, …);
> }
> 
> The comment of MatZeroRowsLocal said "rows - the global row indices”. But 
> this seems inconsistent with its name, so I am confused.
That was indeed a typo on the man page, fix here:
https://gitlab.com/petsc/petsc/-/merge_requests/4183 
<https://gitlab.com/petsc/petsc/-/merge_requests/4183>

> 
> Thanks,
> Qi
> 
> 
>> On Jul 20, 2021, at 2:18 AM, Patrick Sanan <[email protected] 
>> <mailto:[email protected]>> wrote:
>> 
>> Hi Qi -
>> 
>> I just opened a PR to make DMStagStencilToIndexLocal() public
>> https://gitlab.com/petsc/petsc/-/merge_requests/4180 
>> <https://urldefense.com/v3/__https://gitlab.com/petsc/petsc/-/merge_requests/4180__;!!HXCxUKc!mAeQntyQFk-B3KHmJJWuOGKXTfKh8A-uC-v9JFZHW-VbJT7ejxWH7LlaFNM-Zg$>
>> 
>> (Sorry for my inattention - I think I may have missed some communications in 
>> processing the flood of PETSc emails too quickly - I still plan to get some 
>> more automatic DMStag fieldsplit capabilities into main, if it's not too 
>> late).
>> 
>>> Am 20.07.2021 um 02:47 schrieb Tang, Qi <[email protected] 
>>> <mailto:[email protected]>>:
>>> 
>>> Hi,
>>> As a part of implementing this process by ourself, we would like to 
>>> eliminate boundary dofs. By reading DMStag code, we guess we can use
>>> DMStagStencilToIndexLocal
>>> MatZeroRowsLocal
>>> 
>>> We note that DMStagStencilToIndexLocal is not explicitly defined in the 
>>> header file. Is this function ready to use? And will we be able to 
>>> eliminate the dofs using the above functions?
>>> 
>>> Thanks,
>>> Qi
>>> 
>>> 
>>> 
>>>> On Jul 16, 2021, at 8:17 PM, Barry Smith <[email protected] 
>>>> <mailto:[email protected]>> wrote:
>>>> 
>>>> 
>>>>   Zakariae,
>>>> 
>>>>     MatGetSubMatrix() was removed a long time ago, the routine is now 
>>>> MatCreateSubMatrix() but it does not work in way you had hoped. There is 
>>>> currently no mechanism to move values you put into the sub matrix back 
>>>> into the original larger matrix (though perhaps there should be?). 
>>>> 
>>>>     Please look at MatCreateSubMatrixVirtual() and also MatCreateNest() to 
>>>> see if either of those approaches satisfy your needs. 
>>>> 
>>>>     Please let us know if there are extensions that would be useful for 
>>>> you to accomplish what you need. 
>>>> 
>>>>   Barry
>>>> 
>>>> 
>>>>> On Jul 16, 2021, at 7:45 PM, Jorti, Zakariae via petsc-users 
>>>>> <[email protected] <mailto:[email protected]>> wrote:
>>>>> 
>>>>> Hello,
>>>>> 
>>>>> I have a matrix A = [A00 , A01 ; A10, A11]. 
>>>>> I extract the submatrix A11 with MatGetSubMatrix.
>>>>> I only know the global IS is1 and is2, so to get A11 I call: 
>>>>> MatGetSubMatrix(A,is2,is2,MAT_INITIAL_MATRIX,&A11);
>>>>> I want to modify A11 and update the changes on the global matrix A but I 
>>>>> could not find any MatRestoreSubMatrix routine.
>>>>> Is there something similar to VecGetSubVector and VecRestoreSubVector for 
>>>>> matrices that uses only global indices?
>>>>> Many thanks.
>>>>> Best regards,
>>>>> 
>>>>> Zakariae 
>>>> 
>>> 
>> 
> 

Reply via email to