[petsc-users] Mat created by DMStag cannot access ghost points

Ye Changqing Ye_Changqing at outlook.com
Tue May 31 08:55:40 CDT 2022


Dear developers of PETSc,

I encountered a problem when using the DMStag module. The program could be executed perfectly in serial, while errors are thrown out in parallel (using mpiexec). Some rows in Mat cannot be accessed in local processes when looping all elements in DMStag. The DM object I used only has one DOF in each element. Hence, I could switch to the DMDA module easily, and the program now is back to normal.

Some snippets are below.

Initialise a DMStag object:
PetscCall(DMStagCreate2d(PETSC_COMM_WORLD, DM_BOUNDARY_NONE, DM_BOUNDARY_NONE, M, N, PETSC_DECIDE, PETSC_DECIDE, 0, 0, 1, DMSTAG_STENCIL_BOX, 1, NULL, NULL, &(s_ctx->dm_P)));
Created a Mat:
PetscCall(DMCreateMatrix(s_ctx->dm_P, A));
Loop:
PetscCall(DMStagGetCorners(s_ctx->dm_V, &startx, &starty, &startz, &nx, &ny, &nz, &extrax, &extray, &extraz));
for (ey = starty; ey < starty + ny; ++ey)
for (ex = startx; ex < startx + nx; ++ex)
{
...
PetscCall(DMStagMatSetValuesStencil(s_ctx->dm_P, *A, 2, &row[0], 2, &col[0], &val_A[0][0], ADD_VALUES));  // The traceback shows the problem is in here.
}

Best,
Changqing

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20220531/10815f19/attachment.html>


More information about the petsc-users mailing list