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